显示404页面,仅重定向到www

时间:2014-08-21 10:08:13

标签: .htaccess

我想更改404错误。我将404错误页面重定向到自定义页面,而不重定向URL本身。这有效,见(http://www.gincher.net/not.exist)。 我正在使用Google PageSpeed,仅在用户从www输入时才有效。所以我添加了一个重定向来添加www,这对我有用。

当我将它们组合起来时,问题就开始了(http://gincher.net/not.exist)。它给出了这个错误:

  

永久移动

     

该文件已移至此处(gincher.net/not.exist)。

     

此外,遇到500内部服务器错误错误   尝试使用ErrorDocument来处理请求。

这是我的HTACCESS代码:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^gincher.net$
RewriteRule (.*) http://www.gincher.net$1 [R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /error.php [L]

请指教!

1 个答案:

答案 0 :(得分:1)

首先,您正在重新定义ErrorDocument的行为。

你的规则

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /error.php [L]

相同
ErrorDocument 404 /error.php

然后,您的第一条规则中仍然存在语法错误 用这个替换你当前的代码

ErrorDocument 404 /error.php
RewriteEngine On

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

注意:您也可以在不对域名进行硬编码的情况下编写相同的规则

ErrorDocument 404 /error.php
RewriteEngine On

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