4

我在服务器上的 .htaccess 下面有未找到的页面规则,但它似乎不起作用。任何的想法?

RewriteEngine on
RewriteRule ^article_detail/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ article_detail.php?article_det=$2
Options +FollowSymLinks
ErrorDocument 404 http://www.example.com/main/404_not_found.html


# compress text, HTML, JavaScript, CSS, and XML

<IfModule mod_ext_filter.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
# remove browser bugs
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>
4

5 回答 5

21

我假设您使用的是 Apache 而不是 IIS;

  1. 确保您启用了 mod 重写(您可以通过在httpd.conf文件中找到下面的行来执行此操作(通常在/conf/目录中如果您使用共享主机并从行的开头删除分号,这可能会有所不同)

    ;LoadModule rewrite_module modules/mod_rewrite.so

  2. 找到您的 www 根目录的相关目录标签并更改AllowOverride NoneAllowOverride All

  3. 在根目录中创建一个 .htaccess 文件(如果不存在)

  4. 你需要插入一些看起来像这样的东西

    ErrorDocument 500 /errordocs/500.html

    ErrorDocument 404 /errordocs/404.html

    ErrorDocument 401 /errordocs/401.html

    ErrorDocument 403 /errordocs/403.html

    • 代替ErrorDocument 404 /errordocs/404.html你也可以做ErrorDocument 404 http://www.yourdomain.com/errordocs/404.html,甚至只是显示一个简单的消息ErrorDocument 404 "Sorry can't allow you access today"

    • 如果您有任何问题,Apache 手册(ErrorDocument 指令)应该可以进一步帮助您。

在您的情况下,请确保AllowOverride All已打开,您在根目录中编辑.htaccess文件并确保您可以点击错误页面的 URL,如果您指定的 URL 没有任何内容,Apache 将返回默认的 404。

于 2013-07-18T09:23:51.940 回答
1

在您的 apache 配置中,在您网站的 Directory 部分中,确保您被允许覆盖 FileInfo 指令。

类似的东西

AllowOverride FileInfo

http://httpd.apache.org/docs/current/mod/core.html#errordocument

于 2013-07-16T21:10:53.823 回答
1

尝试从 apache 配置中的 httpd.conf 取消注释行。

#LoadModule rewrite_module modules/mod_rewrite.so

未注释:

LoadModule rewrite_module modules/mod_rewrite.so

同时重启apache

于 2013-07-17T14:02:27.200 回答
0

你试过ErrorDocument 404 /main/404_not_found.html吗?

以防万一您的 URL 受到干扰(不确定这是否是您的完整 htaccess)?我通常不会把整个 URL 放进去,尽管从技术上讲你可以。

也可以直接访问404页面吗?

于 2013-07-16T14:59:45.160 回答
0

尝试通过 ErrorDocument 404 http://www.google.com更改行

如果可行,则意味着您使用的路径配置错误。我不知道你的目录结构,所以我可以给你写好的代码。

我认为这不是 .htaccess 错误,因为如果是,您将收到 500 Internal 错误。

如果这个技巧不起作用,那意味着在你的 apache 配置中重定向了一些东西。

于 2013-07-16T15:15:02.647 回答