Схожу с ума от бесконечного цикла и RewriteCond, нужна помощь - PullRequest
1 голос
/ 28 февраля 2010

Я хочу перенаправить пользователей на мою домашнюю страницу, если они введут любой URL , не начинающийся с 'en' или 'fr'. Я часами пытался заставить эту работу работать, но это оказалось слишком жестким для моего хрупкого мозга новичка. В настоящее время, если я попытаюсь перейти на

http://mysite.com/fr/produits/

Firefox сообщает мне, что перенаправление никогда не завершится.

Вот что я хочу:

http://mysite.com/en/whatever/ ==> rewrite as /whatever/index.php?lang=en
http://mysite.com/fr/whatever/ ==> rewrite as /whatever/index.php?lang=fr

http://mysite.com/jp/whatever/ ==> 301 redirect to /fr/accueil/ 
http://mysite.com/whatever/ ==> 301 redirect to /fr/accueil/ 

Вот мой текущий htaccess. См. Встроенные комментарии для деталей.

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

# Require no www
RewriteCond %{HTTP_HOST} !^mysite\.com$ [NC]
RewriteRule ^(.*)$ http://mysite.com/$1 [R=301]

# Redirect from root to /fr/accueil/, the URL for the default home page
RewriteRule ^/$ http://mysite.com/fr/accueil/ [NC,R=302]

# Rewrite language path fragment (/fr or /en) as a parameter 
RewriteRule ^fr/accueil/$ /accueil/index.php?lang=fr [QSA,NC] 
RewriteRule ^en/home/$ /accueil/index.php?lang=en [QSA,NC] 
RewriteRule ^fr/produits/$ /produits/index.php?lang=fr [QSA,NC] 
RewriteRule ^en/products/$ /produits/index.php?lang=en [QSA,NC] 

# I'm aware that the rules in this htaccess are re-examined each
# time a rewrite is issued. So the 'fr/accueil/' I'm redirecting to
# will itself be rewritten as /accueil/index.php?lang=fr. That is
# why I'm providing 3 conditions:
# If URI does not start with 'en' AND
# If URI does not start with 'fr' AND
# If QUERY_STRING is not exactly 'lang'
RewriteCond %{REQUEST_URI} !^en/.*$
RewriteCond %{REQUEST_URI} !^fr/.*$
RewriteCond %{QUERY_STRING} !^lang$
RewriteRule ^.*$ fr/accueil/ [NC,R=301]

Пожалуйста, избавь меня от моих страданий. Ура!

1 Ответ

0 голосов
/ 28 февраля 2010

попробуйте заменить последнюю строку

RewriteRule ^.*$ fr/accueil/ [NC,R=301]

С

RewriteRule ^.*$ fr/accueil/ [NCL,R=301]
...