2015-04-29 3 views
-1

У меня есть сайт на 3 языках. У меня есть только одна страница с кодом, и я изменяю текст для каждого языка.Слова на разных языках по адресу

Просто упрощенный пример той же страницы на английском и французском языках:

myDomain.com/tap.php/?lang=en
MYDOMAIN/tap.php/LANG = фр

?

Для очистки URL я использую:

RewriteRule (myDomain)\/(\w{2})\/(.*) $1\/$3.php?lang=$2 

Это перенаправляет страницы из:

MYDOMAIN/о/нажмите
MYDOMAIN/FR/водопроводная

Это хорошо работает, но мой вопрос: Можно ли иметь слова на разных языках, в URL? Например, если какой-нибудь пользователь пишет на французском языке:

MYDOMAIN/фр/Робине

Примечание: "Робин" является "кран" на французском языке

это мог быть перенаправлен :

MYDOMAIN/tap.php/LANG = фр

(Помните, что у меня только 1 страница для обоих языков, поэтому myDomain/fr/robinet.php/lang=fr не существует. Я мог бы сделать еще одно перенаправление с последнего на myDomain/fr/tap.php/?lang=fr, но это не похоже на очень эффективное решение. Может быть, решение не в .htaccess?

Так что мой вопрос: как вы используете слова на разных языках в URL-адресе?

+0

Вы собираетесь сделать RewriteRule для каждого слова в EN и FR?! Перенаправлять пользователей на основе ip или браузера lang и дать им возможность выбрать другой язык, сохранить этот выбор в cookie. –

+0

Думаю, вы слишком задумываетесь над этим. Я сомневаюсь, что многие пользователи на самом деле вслепую начнут печатать в pagenames в строке URL. (И даже если они это сделали, «страница не найдена» должна быть приемлемой для них) –

+0

@ Dark: возможно, вы правы. Как насчет Google? Я думал, что это поможет в поиске в каждой стране? Ключевые слова в URL-адресе важны. – Nrc

ответ

0

Ну, это кажется довольно простым, чтобы не повлиять на производительность, убедитесь, что вы поместили свои перезаписи, чтобы их вызывали от большей части к минимуму, также используйте последний флаг перезаписи правил.

RewriteRule (myDomain)\/(\w{2})\/(.*) $1\/$3.php?lang=$2 [L] 
RewriteRule myDomain/fr/robinet myDomain/tap.php?lang=fr [L] 

Если вы хотите автоматизировать это, хотя, вы должны будете сделать это на логику приложения, с какой-то маршрутизации. Например, в laravel у вас будет ваш контроллер для файла, скажем TapController, а затем вы определите свои маршруты с помощью какой-либо карты, которая указывает каждое слово на каждый контроллер.

Route::get('/{lang}/{word}', function($lang, $word){ 
    $map = [ 
     'tap' => '[email protected]'.$lang.'index', 
     'robinet' => '[email protected]' 
    ]; 

    return App::make($map[$word]); 
}); 

выше не может быть действительным кодом, не использовали Laravel в довольно долгое время, но это только для иллюстрации моей идеи.

В конце концов вы можете использовать карту перезаписи.

+0

Вы догадываетесь, что URL не выглядит правильным, не так ли? –

+0

Вы уверены, что сделать второй RewriteRule - хорошее решение? Мне нужен RewriteRule для каждого слова-файла!. В отношении опции автоматизации, которая звучит хорошо. Можете ли вы предложить упрощенный пример или с чего начать, пожалуйста? – Nrc

+0

@Nrc Я обновил свой ответ –

Смежные вопросы