【问题标题】:Which way do htaccess rules cascade?htaccess 规则以哪种方式级联?
【发布时间】:2017-01-22 11:21:09
【问题描述】:

我正在尝试将旧网站存档在新网站上的 /v4 目录后面。我希望下面的 .htaccess 会将示例网站中的任何页面重定向到在新域下存档的相应页面。但是,当我刚刚测试该站点时,似乎example.org.au/contact.asp 只是转到newdomain.com/v4/ 而不是`newdomain.com/v4/contact.html

RewriteEngine On
RewriteCond %{HTTP_HOST} !^example\.org\.au$
RewriteRule ^(.*)\.asp$ https://newdomain.com/v4/$1.html [R=302,NC,L]
RewriteRule (.*) https://newdomain.com/v4/ [R=302,NC,L]

第二个 RewriteRule 用于当人们只进入根域但它是否覆盖所有内容时?

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    这样做,并且您的第一条规则设置为忽略 example.org.au,因此永远不会触发。这将处理该站点服务的任何主机。如果这不是您想要的,请告诉我:

    RewriteEngine On
    RewriteRule ^(.*)\.asp$ https://newdomain.com/v4/$1.html [R=302,NC,L]
    RewriteRule ^$ https://newdomain.com/v4/ [R=302,L]
    

    【讨论】:

    • 非常感谢 - 我仍然在关注服务器端的事情,而不是我的自然空间。 “处理站点服务的任何主机”是什么意思?我注意到没有包含旧的示例站点,这对我来说很有意义,但是我有什么理由把它放在那里吗? (当我阅读如何做到这一点时,我会从某个地方得到它)。
    • 很高兴它正在工作。如果从同一个站点为多个主机提供服务,您可能希望像使用 RewriteCond 一样选择适用于哪一个规则。我只是在检查那不是你的意图。
    • 啊,我明白了。不,只有一个主机。再次感谢。
    • 您可能希望将那些 302 更改为 301,现在它正在工作,使它们成为永久重定向而不是临时重定向。
    猜你喜欢
    • 2021-11-24
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 2020-04-11
    • 2020-10-02
    • 2013-01-08
    相关资源
    最近更新 更多