.htaccess将未找到的页面重定向到特定页面

时间:2014-05-04 11:06:06

标签: .htaccess

这是我的代码

RewriteRule ^error$ error.php [QSA,L]
RewriteRule ^siteuri_partenere$ siteuri_partenere.php [QSA,L]
RewriteRule ^politica_de_confidentialitate$ politica_de_confidentialitate.php [QSA,L]
RewriteRule ^blog - [L,NC]

RewriteRule ^([^/.]+)/?$ game.php?weblink=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /error [L,R=302]

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

所以,如果我改变这一行

RewriteRule . /error [L,R=302]

RewriteRule . /page_not_found [L,R=302]

然后我测试www.domain.com/1q2w3e,仍然重定向到/ error而不是/ page_not_found所以我很困惑在哪里出问题?

1 个答案:

答案 0 :(得分:1)

您很可能有一些ErrorDocument 404指令覆盖了您的重写规则。将此代码放在根.htaccess:

Options +FollowSymLinks -MultiViews
ErrorDocument 404 default
RewriteEngine On

RewriteRule ^blog - [L,NC]

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteRule ^error$ error.php [L]

RewriteRule ^siteuri_partenere$ siteuri_partenere.php [L]

RewriteRule ^politica_de_confidentialitate$ politica_de_confidentialitate.php [L]

RewriteRule ^([^/.]+?)/?$ game.php?weblink=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /page_not_found [L,R=302]