2017-02-21 6 views
0

Я надеялся, что вы сможем мне что-то помочь. У меня есть следующий htaccess в корне моего сайта. Идея заключается в том, что всякий раз, когда вы входите в [mywebsite]/[country_code], вы перенаправляетесь на [mywebsite] /teaser.php?country= [country_code] Когда я тестирую его локально на своем apache, он отлично работает; но когда я загружаю его на свой веб-сервер, он вводит бесконечный цикл [mywebsite]/[country_code]/[country_code]/[country_code]/etc ... Можете ли вы сказать мне, что я здесь делаю неправильно?.htaccess - бесконечный цикл перенаправления, работает нормально локально

RewriteEngine on 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 

RewriteRule ^cl\/*$ teaser.php?country=cl 
RewriteRule ^ar\/*$ teaser.php?country=ar 
RewriteRule ^br\/*$ teaser.php?country=br 
RewriteRule ^bo\/*$ teaser.php?country=bo 
RewriteRule ^co\/*$ teaser.php?country=co 
RewriteRule ^cl\/*$ teaser.php?country=cl 
RewriteRule ^la-ec\/*$ teaser.php?country=la-ec 
RewriteRule ^py\/*$ teaser.php?country=py 
RewriteRule ^pe\/*$ teaser.php?country=pe 
RewriteRule ^ve\/*$ teaser.php?country=ve 
RewriteRule ^cr\/*$ teaser.php?country=cr 
RewriteRule ^cu\/*$ teaser.php?country=cu 
RewriteRule ^mx\/*$ teaser.php?country=mx 
RewriteRule ^ni\/*$ teaser.php?country=ni 
RewriteRule ^pa\/*$ teaser.php?country=pa 
RewriteRule ^sv\/*$ teaser.php?country=sv 
RewriteRule ^gt\/*$ teaser.php?country=gt 
RewriteRule ^ht\/*$ teaser.php?country=ht 
RewriteRule ^hn\/*$ teaser.php?country=hn 
RewriteRule ^do\/*$ teaser.php?country=do 
RewriteRule ^uy\/*$ teaser.php?country=uy 

Спасибо!

ответ

0

У вас нет этих правил. Просто используйте простой регулярное выражение, чтобы объединить все правила в одном правиле и перепроверять:

RewriteEngine on 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^([a-z]{2}(?:-[a-z]{2})?)/?$ teaser.php?country=$1 [L,QSA,NC] 
+0

Дело в том, что мне нужно, чтобы убедиться, что эта работа для конкретного набора кодов стран, а не для какой-либо комбинации из двух букв , Спасибо хоть! –

+0

Почему любая ссылка будет выглядеть как 'domain.com/xy'? Ссылки будут созданы вами для некоторых известных кодов стран только как 'domain.com/pa' OR' domain.com/co' – anubhava

+0

Я не создаю никакой ссылки, это идея, у меня есть только один файл, тизер. php, который действует в зависимости от страны, которую вы передаете в качестве параметра. Если вы введете какой-либо действующий код страны, он отправится в тизер с этой страной, но если вы введете случайную комбинацию из двух букв, он должен бросить вам 404, а не перенаправлять на teaser.php. –

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