【问题标题】:Show 404 page with redirecting to www only显示 404 页面,仅重定向到 www
【发布时间】:2014-08-21 10:08:12
【问题描述】:

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

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

永久移动

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

此外,在执行过程中遇到了 500 Internal Server Error 错误 尝试使用 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]

请指教!

【问题讨论】:

  • 在您的问题中重定向到 www 是什么意思?您是在谈论重定向到根域吗?例如:www.stackoverflow.com 将是该站点的根目录。
  • @john redirect to www 表示当您进入 gincher.net 时,它会将您重定向到 www.gincher.net

标签: .htaccess


【解决方案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]

【讨论】:

    猜你喜欢
    • 2013-12-01
    • 2011-09-05
    • 2017-05-05
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    相关资源
    最近更新 更多