Redirect 301 & RewriteCond Collision - PullRequest
       1

Redirect 301 & RewriteCond Collision

0 голосов
/ 14 ноября 2011

У меня в файле .htaccess следующий код:

Options +FollowSymLinks
RewriteEngine On

Redirect 301 /index.asp     http://www.website.com/index.php
Redirect 301 /contact.asp   http://www.website.com/contact.php

RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^(.*/)?index\.([a-zA-Z0-9]{3,4})$ /$1 [R=301,L]

ErrorDocument 404 error.php
RewriteRule ^sitemap.xml sitemap.php

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} ^(.*)$
RewriteRule (.*) seofile.php?word=%{REQUEST_URI}

Теперь по какой-то причине, когда я вхожу в contact.asp, я получаю

http://www.website.com/seofile.php?word=/contact.asp

какя могу это исправить?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2011

Совет: попытайтесь отделить вещи, которые не принадлежат RewriteRules.

Попробуйте этот код и скажите, пожалуйста, работает ли он:

ErrorDocument 404 error.php

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^(index|contact)\.asp $1.php [QSA,R=301,L]
RewriteRule ^sitemap\.xml$ sitemap.php [L]

RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^(.*/)?index\.([a-zA-Z0-9]{3,4})$ /$1 [R=301,L]

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule (.*) - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) seofile.php?word=%{REQUEST_URI}
0 голосов
/ 14 ноября 2011

Попробуйте использовать rewriterule вместо Redirect (я думаю, что правила перезаписи применяются до правил перенаправления). Так что-то вроде:

RewriteRule ^index.asp   /             [R=301,L]
RewriteRule ^contact.asp /contact.php  [R=301,L]

PS. первое правило можно удалить, поскольку вы уже переписываете каждый файл index.xxx.

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