【问题标题】:htaccess redirect if URL is bad - how to do this?如果 URL 错误,htaccess 重定向 - 如何执行此操作?
【发布时间】:2017-07-17 21:58:54
【问题描述】:

我想重定向坏的链接,得到 404 错误。 假设我有以下网址:

http://www.example.com/foobar

如果上面的url不好,我希望它用.html后缀重定向它

http://www.example.com/foobar.html

所以基本上我想确保 URL 是错误的并且它不以 .html 结尾,然后只应用规则,即带有 .html 后缀的相同 URL。

更新:不只是foobar.html,还有成千上万个页面是动态的,所以简单地使用/foobar.html 来重定向是行不通的。

我正在寻找的示例

以下网址将转到标准 404 页面

http://www.example.com/this-is-bad.html

下面的 url 将转到它的 .html 页面

http://www.example.com/this-is-bad

下面的网址不会重定向,因为末尾有斜线

http://www.example.com/foobar/

下面的 url 正在工作,不应该被重定向到任何地方。这不是一个文件,而是一个动态页面。

http://www.example.com/this-is-good

谢谢

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    只需使用ErrorDocument 404:

    ErrorDocument 404 /foobar.html
    

    如果你想要完全重定向(在 broser 中更改 URL)然后使用 L

    ErrorDocument 404 http://www.example.com/foobar.html
    

    此门槛将所有 404 网址重定向到 /foobar.html

    更新:试试这个规则

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^./]+)/?$ /$1.html [L,R=302]
    

    【讨论】:

    • 不,我不能......因为foobar 可以是任何东西,它也可以是前导 404,应该重定向到正确的 404 页面。
    • 真正的 foobar 可以是任何东西,这不仅适用于 foobarblablabla,它会针对每个 404 条件进行重定向。
    • 所以你想在404发生时将blablabla重定向到/blablabla.html
    • 好的,我想我现在明白了。立即查看更新部分。
    • 是的,我明白这一点并相应地更新了我的答案。检查我的答案的更新部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    相关资源
    最近更新 更多