редирект — почему мой PHP не перенаправляет на мой испанский сайт?

Мой код работает для всех моих сайтов, кроме тех, которые начинаются с «es». Всякий раз, когда я пытаюсь перейти на эти сайты, я возвращаюсь к index.html.

Это мой код index.php:

<?php
/*
*
License: Creative Commons Attribution 3.0 Unported
License URL: http://creativecommons.org/licenses/by/3.0/
*
*/
include "app/config.php";
include "app/detect.php";

if ($page_name=='') {
include $browser_t.'/index.html';
}
elseif ($page_name=='index.html') {
include $browser_t.'/index.html';
}
elseif ($page_name=='es/index.html') {
include $browser_t.'/es/index.html';
}

else
{
include $browser_t.'/404.html';
}

?>

Я связываю мой сайт так что вы говорите, что я имею в виду. В верхнем правом углу есть гиперссылка с надписью «Español», и когда вы щелкаете по ней, вы должны перейти на испанскую версию страницы, на которой вы сейчас находитесь. Вместо этого он просто переносит вас на вкладку указателя заново и меняет подкаталог, но моя переведенная страница не отображается.

Внутри config.php у меня есть следующее:

<?php
/*
*
License: Creative Commons Attribution 3.0 Unported
License URL: http://creativecommons.org/licenses/by/3.0/
*
*/
$current_page_uri = $_SERVER['REQUEST_URI'];
$part_url = explode("/", $current_page_uri);
$page_name = end($part_url);
$email_id = "[email protected]";
?>

И я бы добавил свой detect.php код здесь, но это большой файл, а не проблема, которую я пытаюсь решить, поэтому вместо этого я просто скомпоную его.

PS
Все связано надлежащим образом, и я все трижды проверил. Мой единственный подозреваемый — мой index.php, который я не знаю почему.

0

Решение

$part_url = explode("/", $current_page_uri);
$page_name = end($part_url);

Когда URL-адрес «es / index.html», этот код будет назначать $page_name на «index.html», так как вы заинтересованы только в том, что после последнего /,

Одним из способов может быть проверка конца строки с помощью strrposнапример,

if(strrpos("es/index.html", $current_page_uri) !== FALSE)
// Go to spanish site
else if(strrpos("index.html", $current_page_uri) !== FALSE)
// Normal index page

Вы также можете проверить второй до последнего элемента в $part_url и проверьте, если это «ES», или любой другой код языка.

0

Другие решения

если я правильно понял вашу логику, вы должны просто использовать другое условие здесь

заменить:

if ($page_name=='') {
include $browser_t.'/index.html';
}
elseif ($page_name=='index.html') {
include $browser_t.'/index.html';
}
elseif ($page_name=='es/index.html') {
include $browser_t.'/es/index.html';
}

else
{
include $browser_t.'/404.html';
}

с

if ($current_page_uri=='') {
include $browser_t.'/index.html';
}
elseif ($current_page_uri=='index.html') {
include $browser_t.'/index.html';
}
elseif ($current_page_uri=='es/index.html') {
include $browser_t.'/es/index.html';
}

else
{
include $browser_t.'/404.html';
}

Я думаю, что вы планировали использовать $page_name как детектор. но значение вы пытаетесь сравнить es/index.html это действительно твой Ури.

0

По вопросам рекламы [email protected]