2011-11-14 7 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] 

PS。すでにすべての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}