Улучшение URL с использованием .htaccess или php? - PullRequest
0 голосов
/ 30 ноября 2010

В поисках более удобных для пользователя и дружественных для поисковых систем URL, я хочу украсить свои URL: правило Apache htacces, которое достигает этого (благодаря Лоуренсу Гонсалвесу)

RewriteRule ^([a-z][a-z])/(.*) /$2?ln=$1 [L]

, что делает это возможным:
/uk/somepage вместо /somepage?ln=uk
/de/somepage вместо /somepage?ln=de
/ja/somepage вместо /somepage?ln=ja

Теперь сложная часть: ранееURL-адрес был заменен обычной ссылкой, например href="?ln=de" или href="?ln=it", для изменения языка текущей страницы.Но как я могу этого достичь?Таким образом, текущая страница остается прежней, но только две предшествующие строчные буквы, которые говорят браузеру, на каком языке она изменяется?

Так, как указать ссылку, чтобы изменить только /uk/contact на /de/contactпосле того, как на немецком (де) языке флаг нажал?PHP решение для переписывания URL или htaccess решения принимаются.

Я обнаружил, что $_SERVER['REQUEST_URI'] будет выводить /uk/somepage, но я не могу написать код PHP, который может разделить компоненты, добавить новый код языка, как«де» в него, который я могу положить вручную в нормальный HREF, который идет на немецком флаге.и т.д. Спасибо за любые подсказки / ответы!

Ответы [ 2 ]

0 голосов
/ 30 ноября 2010

Ну, вы можете разделить request_uri используя, ну, split () или explode () .

$uri_bits=explode('/', $_SERVER['REQUEST_URI']);

Теоретически идентификатор языка будет в $ uri_bits [1] (так как [0] будет содержать строку нулевой длины, но вы должны проверить это с помощью print_r () - массива). Конечно, вы должны проверить, существует ли $ uri_bits [1], и это идентификатор языка, самый простой способ сделать это будет:

if($uri_bits[1]==$_GET['lang'])

Затем вы можете изменить это и объединить биты снова, используя implode ()

$uri_bits[1]="it";
$url_german=implode('/', $uri_bits);

По крайней мере, так я бы это сделал.

0 голосов
/ 30 ноября 2010

Возможно, вы захотите взглянуть на что-то вроде взорвать или регулярные выражения , чтобы удалить неязыковую часть URL (например, / contact) и просто добавить ееснова к новой строке, содержащей идентификатор языка.

Может быть, вы могли бы начать:

<?php

function changeLanguageLink($language_id)
{
    $uri = $_SERVER['REQUEST_URI'];

    $link = preg_replace('/\/?(uk|de)\/(.*)/', "/$2", $uri);    
    $link = $language_id . $link;

    return $link;
}

?>

<a href="changeLanguage('uk');">Change language to UK</a>
...