Как перенаправить в .htaccess? => / ua / to /? lang = ua - PullRequest
2 голосов
/ 13 декабря 2011

У меня есть многоязычный веб-сайт и .htaccess, который отображает все страницы и язык ? Lang = ua стиль.

Я хочу перенаправить (используя код 301) запросы site.com / ru / на site.com /? Lang = en с помощью RewriteEngine.

Пример:

site.com/en/               => site.com/?lang=en
site.com/ua/news.html      => site.com/news.html?lang=ua
site.com/ua/news/2-material-two.html => site.com/news/2-material-two.html?lang=ua
and so on much...

Как подготовить файл Htaccess для Apache, чтобы соответствовать этому критерию? А как дела?

Заранее спасибо

Ответы [ 4 ]

1 голос
/ 13 декабря 2011

Поместите этот код в ваш файл .htaccess в DOCUMENT_ROOT dir:

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^([^/]+)/(.*)$ /$2?lang=$1 [L,R=301,QSA]
0 голосов
/ 14 декабря 2011

Пожалуйста, если вы должны использовать общий принцип "возможно совпадение каталогов", рассмотрите оператор! -D (и необязательно: оператор! -F).

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]{2})/ http://site.com/?lang=$1 [R=301,L]

Таким образом, вы не будете в конечном итоге исправлять всевозможные странные проблемы с существующими файлами и / или каталогами.

0 голосов
/ 13 декабря 2011

Добавьте следующее в файл htaccess в корне вашего домена

RewriteEngine On
RewriteBase /

#if the lang param is not present
RewriteCond %{QUERY_STRING} !^lang=
#capture the language code and redirec to url with lang param
RewriteRule ^([a-zA-Z]+)/(.+\.html)$ /$2?lang=$1 [L,R=301,NC]
0 голосов
/ 13 декабря 2011

Попробуйте это:

Options +FollowSymlinks

RewriteEngine on

RewriteOptions MaxRedirects=10

RewriteBase /

RewriteRule http://site.com/([^/]+)/(.+).html$ http://site.com/$2.html?lang=$1 [R=301,NC]

Я только что соединил это с макушки головы, так что это может быть не совсем правильно, но идея в том, что он проверит URL, и ([^/]+) должен прочитать 1-й каталог, а затем прочитать все вверх в .html.

Затем переписывает URL-адрес для site.com/[everything после 1-го каталога до .html] .html? Lang = [имя 1-го каталога]

...