【问题标题】:Htaccess 404 - redirectHtaccess 404 - 重定向
【发布时间】:2014-10-19 23:13:32
【问题描述】:

如果有人请求一个不存在的页面,例如如果它

site.com/blabla/?search=blabla

使用这个htacess

ErrorDocument 404 /

他们被重定向到具有相同 URL 的主页,site.com/blabla/?search=blabla 我想要做的是,将它们重定向到 IP,而不是主页。试过这个;

ErrorDocument 404 http://64.233.185.94/

但它只是重定向到http://64.233.185.94/ 我想用找不到的 url 重定向它,所以它应该重定向到

http://64.233.185.94/blabla/?search=blabla

此时。

这样做的正确方法是什么?

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite redirect


    【解决方案1】:

    为此,您需要使用mod_rewrite 规则而不是ErrorDocument

    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{HTTP_HOST} !=64.233.185.94
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.+)$ http://64.233.185.94/$1 [L,R]
    

    【讨论】:

    • 你试过了吗?它使无限重定向循环
    • 只有当64.233.185.94 是进行重定向的同一主机的 IP 时,它才会导致无限循环。真的是这样吗?
    【解决方案2】:

    您可以使用 mod_rewrite 来完成此操作。使用 mod_rewrite 您可以测试请求的文件或目录是否存在,如果它们不存在,您可以进行外部重定向:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILNEMAE} !-d
    RewriteRule ^ http://64.233.185.94%{REQUEST_URI} [R,L]
    

    在测试是否按预期工作后,将 R 标志更改为 R=301

    【讨论】:

    • R和R=301有什么区别,重要吗?还是只针对搜索引擎?
    • 301 重定向是永久性的,因为 hjpotter 链接。通过使用永久重定向,客户端可以期望重定向永远不会改变,这意味着他们可以(永久)缓存第二个 url 并在对第一个 url 的任何后续请求中加载第二个 url。对于搜索引擎,这将防止因重复内容而受到处罚。
    猜你喜欢
    • 2014-08-29
    • 2016-06-05
    • 1970-01-01
    • 2015-03-20
    • 2011-07-07
    • 1970-01-01
    • 2017-02-09
    • 2011-12-05
    • 2013-01-30
    相关资源
    最近更新 更多