2011-11-14 4 views
0
내 htaccess로 파일에 다음 코드가

: 어떤 이유로 지금리디렉션 301한다 RewriteCond 충돌

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} 

, , I 항목이 contact.asp 때 나는

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

어떻게 해결할 수 있습니까?

답변

0

리디렉션 대신 rewriterule을 사용해보십시오 (리디렉션 규칙 전에 다시 쓰기 규칙이 적용됩니다). 이렇게 :

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

추신. 이미 모든 index.xxx 파일을 다시 쓰면 첫 번째 규칙이 제거 될 수 있습니다.

0

조언 : 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}