Мой код работает для всех моих сайтов, кроме тех, которые начинаются с «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, который я не знаю почему.
$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», или любой другой код языка.
если я правильно понял вашу логику, вы должны просто использовать другое условие здесь
заменить:
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
это действительно твой Ури.