【问题标题】:mod_rewrite 404 and rewrite is not workingmod_rewrite 404 并且重写不工作
【发布时间】:2011-06-21 05:29:41
【问题描述】:

您好,

我无法让我的 htaccess mod_rewrite 正常工作.. 我有一些用于一些静态页面的基本 RewriteRules,来自非 www 版本的重定向,现在我想添加一个自定义 404 页面(称为 404.php,位于我的 webroot 中。

发生的情况是,当我尝试访问底层页面时,它只会一遍又一遍地向我抛出 404 消息...任何人都可以看到这段代码有任何问题吗?

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.*)$ /404.php [L]
RewriteCond %{HTTP_HOST} ^dhb\.nu$
RewriteRule (.*) http://www.dhb.nu/$1 [R=301,L]
RewriteRule ^policy/$ page.php?page_id=11
RewriteRule ^cookies/$ page.php?page_id=13

提前致谢!

【问题讨论】:

    标签: php .htaccess mod-rewrite http-status-code-404 url-rewriting


    【解决方案1】:

    试试这个:

    ErrorDocument 404 /404.php
    

    在此处阅读更多信息:http://www.garnetchaney.com/htaccess_tips_and_tricks.shtml

    【讨论】:

    • 已解决!!!在本文中找到了问题的解决方案。顺便说一句,即使在测试时,您也应该使 404 页面大于 512 字节。否则,Internet Explorer (IE) 将加载它所谓的内置“友好 HTTP 错误消息”,而不是您的 404 页面。 Chrome 浏览器的表现也好不到哪里去。
    【解决方案2】:

    代替

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^/?(.*)$ /404.php [L]
    

    你真的应该使用ErrorDocument 指令:

    ErrorDocument 404 /404.php
    

    【讨论】:

    • 没有任何区别。现在根本不显示404页面。
    • 嗯,然后显示什么? apache 错误日志中显示了什么?你确定你的 / 的 RewriteBase 是正确的吗?
    • 哦,对不起!实际上,当我尝试浏览我网站上不存在的 URL 时,Chrome 只是说“此链接已损坏”。
    猜你喜欢
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 2014-07-14
    • 2011-04-14
    • 1970-01-01
    相关资源
    最近更新 更多