.htaccess: Регулярное выражение для перенаправления людей в нужный языковой подкаталог - PullRequest
2 голосов
/ 19 декабря 2011

Я пытаюсь настроить перенаправление, которое отправляет людей в нужный языковой подкаталог (при установке WordPress, но я думаю, что это не актуально):

Если вы пришли через домен example.com или example.eu (example.com/cur / ...) без какого-либо языкового подкаталога (/ en или / de), я хочу отправить их на example.com/cur /en/...

И если они проходят через домен example.de, и у них нет языкового подкаталога в URL, я хочу отправить их в example.de/cur/de/...

Мой .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /cur/

RewriteRule ^http://(www\.)?example\.(eu|com)/cur((?!/en|/de).)*$ http://$1example.$2/cur/en$4 [R=301,L]
RewriteRule ^http://(www\.)?example\.(de)/cur((?!/en|/de).)*$ http://$1example.$2/cur/de$4 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /cur/index.php [L]
</IfModule>

Вы видите, что я пропускаю / портлю?

Ответы [ 2 ]

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

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

RewriteEngine On

RewriteCond %{HTTP_HOST} example\.(com|eu)$
RewriteCond %{REQUEST_URI} !^(/cur)?/(en|de)/
RewriteRule ^(.*)$ /cur/en/$1 [R=301,L]

RewriteCond %{HTTP_HOST} example\.de$
RewriteCond %{REQUEST_URI} !^(/cur)?/(en|de)/
RewriteRule ^(.*)$ /cur/de/$1 [R=301,L]
0 голосов
/ 19 декабря 2011

Вы должны использовать mod_rewrite %{HTTP_HOSTNAME}:

RewriteCond %{HTTP_HOSTNAME} ^example\.de$
RewriteRule /(.*) http://example.com/cur/de/$1 [R]

и т. Д. И т. Д.

Но я не понимаю, почему вы используете .htaccess для этого.Это действительно работа для VirtualHost с ServerAllias записями и помещением ваших правил перезаписи в этот vhost, используя тот же принцип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...