【问题标题】:.htaccess and redirecting nonexistent files and directories.htaccess 和重定向不存在的文件和目录
【发布时间】:2013-10-14 18:40:23
【问题描述】:

我正在试图弄清楚如何编写一个 .htaccess 文件以将任何不存在的文件或目录重定向到 web 根目录中的 index.html 文件。

我用这个指令弄明白了:

ErrorDocument 404 /index.html

问题是 Web 服务器仍然返回 HTTP 404 错误。我想为所有这些文件显示一个永久重定向。重要的是不要返回 404 错误。

建议赞赏!

【问题讨论】:

    标签: apache .htaccess redirect


    【解决方案1】:

    尝试将此规则添加到您的 htaccess 文件中:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^ /index.html [L,R=301]
    

    这会检查请求不是文件,不是目录,也不是符号链接。然后将任何请求重定向到/index.html

    【讨论】:

    • 这肯定会重定向错误请求的目录和文件。谢谢!我需要检查网络日志,但我无法想象 Apache 会传回 HTTP 404 错误。
    • 好的,经过一些测试,这显然有问题。当页面合法时,不会显示完整的 URL。任何想法为什么?
    • @Mark “完整的 URL 不显示”是什么意思?显示在哪里?在位置栏中?页面没有被渲染?
    • 没错。页面重定向正确,但 URL 字段为空白。会不会和链接有关?
    • @Mark 不知道为什么你会被重定向到一个空白的 URL。上面的规则清楚地使它转到/index.html,它不是空白的。不知道您所说的与链接有关的意思,我不知道您的网站是如何设置的。
    【解决方案2】:

    有一个方便的FallbackResource directive in Apache

    FallbackResource /index.html
    

    【讨论】:

    • FallbackResource 将提供/index.html 页面,但不会永久重定向。它只是默默地为资源服务。
    • 我不确定 OP 是否在考虑 HTTP 重定向
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    相关资源
    最近更新 更多