2014-01-21 2 views
1

У меня есть следующий файл .htaccess:Stop Apache mod_rewrite влияет на правила перенаправления

Redirect 301 /test/example-1 /test/example-2 

RewriteEngine On 
RewriteBase /test/ 
RewriteRule ^(.*)$ index.php?_url=$1 [QSA,L] 

Я хочу редирект произойти без mod_rewrite мешающего с ним, но в тот момент, когда вы нажмете /test/example-1 он перенаправляет на /test/example-2?_url=example-1.

Есть ли способ остановить параметр запроса из правила перезаписи, добавив URL-адрес переадресации? Благодарю.

ответ

0

Иметь свой переписывают правило, как:

RewriteEngine On 
RewriteBase /test/ 

RewriteCond %{REQUEST_URI} !/(example-1|index\.php) [NC] 
RewriteRule ^(.*)$ index.php?_url=$1 [QSA,L] 

Но в целом вы не должны смешивать mod_alias правила с mod_rewrite правилами. Ваш код может быть переписан как:

RewriteEngine On 
RewriteBase /test/ 

RewriteCond %{THE_REQUEST} /example-1[\s?/] [NC] 
RewriteRule^example-2 [R=301,L] 

RewriteRule ^(.*)$ index.php?_url=$1 [QSA,L] 
+0

Спасибо. Единственное, что может быть много переадресаций, я как бы надеялся, что может быть способ сделать, просто ли Apache обрабатывает перенаправления до того, как mod_rewrite сделает что-нибудь? Сохраните любое дублирование и т. Д. –

+0

Обновите свой обновленный ответ для получения более подробной информации. – anubhava

+0

Спасибо, ты абсолютно прав, я должен просто использовать mod_rewrite для всего. –

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