.htaccess 一般捕获前面 410 个 RewriteRules 的所有 RewriteRule

问题描述 投票:0回答:1

我有以下设置:我们将一个名为 www.redirected-website.com (wordpress)的域名重定向到另一个名为 www.final-website.com (也是 wordpress)的域名。有一些特定的 RewriteRules 无法通过一般的 catch all 规则处理,我们需要返回 410:

RewriteEngine On
RewriteRule ^path/link1/?$ "-" [G,NC]
RewriteRule ^path2/link2/?$ "-" [G,NC]
RewriteRule ^path3/link3/?$ "-" [G,NC]
...some more specific RewriteRules bellow
RewriteRule ^(.*)$ https://www.final-website.com/path4/$1 [R=301,L]

我面临的问题是,尽管一般捕获所有规则位于 .htaccess 文件的底部,但它仍然重写了 410 规则,在我看来,这些规则应该停止处理 htaccess 文件的迭代: https://httpd.apache.org/docs/current/rewrite/flags.html#flag_g https://httpd.apache.org/docs/current/rewrite/flags.html#flag_end 我还测试了将 END 标志添加到 410s,但结果是相同的......正在应用最终重写规则:

root@server:~# curl -I -L https://www.redirected-website.com/path/link1/
HTTP/2 301
x-frame-options: DENY
location: https://www.final-website.com/path4/410.shtml

你能帮我理解这种奇怪的行为吗?谢谢!

wordpress apache .htaccess
1个回答
0
投票

@C3roe 为我指明了正确的方向。我有 ErrorDocument 410 的定义,它完全指向此文件 410.shtml。添加在 htaccess 之上:

ErrorDocument 410 " "

解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.