2013-10-03 3 views
1

Мне нужна помощь в написании 2 правильных правил mod_rewrite для веб-сайта.mod_rewrite перенаправление по умолчанию на недостающие сегменты

В основном я иметь следующую структуру:

http://www.website.com/subsite/lang (например www.website.com/corporate/en), а затем другие сегменты URL. Все работает нормально.

Что мне нужно сделать, однако, заключается в следующем:

  1. Force перенаправлять http://www.website.com/default/ при посещении www.website.com и (если) был опущен первый сегмент (суб-сайт). Это может быть жестко закодированное значение.

  2. Обнаружение broswer $ lang с .htaccess и перенаправление на http://www.website.com/subsite/$lang, если язык не указан в URL-адресе.

Каков правильный способ выполнения этих двух правил с .htaccess?

+1

http://stackoverflow.com/questions/16511378/redirect-from-and-to-subdomain-with- htaccess-base-on-browser-language может помочь. – Lammi

ответ

0

-достаточно просто:

RewriteEngine On 
RewriteRule ^$ /default/ [L,R=301] 

Но 2 требует разбора заголовка -приема языка, и это не так просто, как регулярное выражение и заменить.

0

Включить mod_rewrite и .htaccess через httpd.conf, а затем поместить этот код в файле: DOCUMENT_ROOT/.htaccess

RewriteEngine On 

# if 1st segment is not there send to /default 
RewriteCond %{REQUEST_URI} !^/(default|corporate)/ [NC] 
RewriteRule^/default/ [L,R=301] 

# if language was not specified in the URL then send to /corporate/$lang 
RewriteCond %{REQUEST_URI} !^/(?:default|corporate/[a-z]{2}) [NC] 
RewriteCond %{HTTP:Accept-Language} ^([a-z]{2}) [NC] 
RewriteRule^/corporate/%1 [L,R=301] 
+0

Сладкий! Это почти работает. Тем не менее, я перенаправляюсь на что-то вроде '' 'http: // www.website.com/enterprise/en-US, en% 3bq = 0.8''' вместо простого 'en' в конце. Есть ли способ исправить это? Также у меня есть только 3 языка. 'fr', 'en' и 'de'. Я бы хотел, чтобы меня переадресовали на «fr», если не обнаружено ни одного из 3 языков. – kernelpanic

+0

Хорошо, позвольте мне попытаться исправить то, что – anubhava

+0

попробовал отредактировать код сейчас. – anubhava

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