Могу ли я использовать два отдельных RewriteCond на основе языка браузера в .htaccess для root и поддоменов - PullRequest
0 голосов
/ 15 августа 2011

Могу ли я использовать два отдельных RewriteCond на основе браузера в .htaccess?Один для корня домена, другой для субдомена «m».

RewriteCond %{HTTP:Accept-Language} (cs) [NC]
RewriteRule ^$ /index_cz.php [L,R=301]

RewriteCond %{HTTP:Accept-Language} (cs) [NC]
RewriteRule ^$ /m/index_cz.html [L,R=301]

В настоящее время первое правило работает нормально, но второе правило не работает и вместо этого показывает корень index_cz.php, если найден язык "cs".Есть идеи?Спасибо!

Ответы [ 3 ]

1 голос
/ 15 августа 2011

Правила разбираются один за другим. Из-за инструкции 'L', как только условие выполнено, другие правила не проверяются, если у меня хорошая память. Это означает, что вам придется что-то добавить, чтобы дифференцировать ваши условия. Когда вы хотите применить каждое из правил переписывания? «М» означает мобильный? Вы говорите о субдомене ... Затем вы должны проверить субдомен тоже в условиях.

Если у вас действительно есть субдомен 'm', вы можете придерживаться следующих правил:

RewriteCond %{HTTP_HOST} m.YourDomain.com [NC]
RewriteCond %{HTTP:Accept-Language} (cs) [NC]
RewriteRule ^$ /m/index_cz.html [L,R=301]

RewriteCond %{HTTP_HOST} ([^.]+)\.YourDomain.com [NC]
RewriteCond %{HTTP:Accept-Language} (cs) [NC]
RewriteRule ^$ /index_cz.php [L,R=301]

Не забудьте заменить YourDomain.com на свое фактическое доменное имя.

Помогает ли это?

1 голос
/ 15 августа 2011
RewriteCond %{HTTP:Accept-Language} (cs) [NC]
RewriteRule ^$ /index_cz.php [L,R=301]

RewriteCond %{HTTP:Accept-Language} (cs) [NC]
RewriteRule ^$ /m/index_cz.html [L,R=301]

Ваши условия такие же!как Apache должен обнаружить разницу!Если вы хотите использовать разные языки, измените условия!

Редактировать :

RewriteCond %{HTTP:Accept-Language} (cs) [NC]
RewriteCond %{HTTP_HOST} www\.domain\.com [NC]
RewriteRule ^(.*)$ /index_cz.php [L,R=301]

RewriteCond %{HTTP:Accept-Language} (cs) [NC]
RewriteCond %{HTTP_HOST} m\.domain\.com [NC]
RewriteRule ^(.*)$ /m/index_cz.html [L,R=301]
0 голосов
/ 16 августа 2011

Я забыл некоторые символы при проверке домена. Я должен был написать:

RewriteCond %{HTTP_HOST} ^m\.YourDomain\.com [NC]
RewriteCond %{HTTP:Accept-Language} (cs) [NC]
RewriteRule ^$ /m/index_cz.html [L,R=301]

RewriteCond %{HTTP_HOST} ([^.]+)\.YourDomain\.com [NC]
RewriteCond %{HTTP:Accept-Language} (cs) [NC]
RewriteRule ^$ /index_cz.php [L,R=301]

Я избежал периодов в имени домена и добавил ^ в начале мобильного субдомена. Этот знак означает «начинается с».

И вам понадобятся два дополнительных набора правил для английского языка.

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