真的很奇怪的行为。
在mysite https://staging.example.com的子域中,我具有以下htaccess。
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /support /support/subsection
</IfModule>
这在https://example.com上可以正常使用,但在staging.mysite.com上则无法使用
我得到这种重复的模式,好像有一些循环或正在发生的事情
答案 0 :(得分:0)
重定向指令要求使用完整的URI作为重定向目标。但是,您可以使用RedirectMatch,它允许您将相对URI指定为目标。
RedirectMatch 301 ^/support$ /support/subsection
我认为您得到所有这些小节的原因有两个。第一个原因是您没有使用完整的URI进行重定向。我认为文档声称您不必使用它,我猜是文档错字。
第二个原因是因为您没有明确告诉引擎您想要什么,因此它不会总是按预期运行。使用.htaccess时,每次调用.htaccess文件时都会处理规则。由于您不知道从何处开始和结束(^ $),因此(我认为)每个字符将被处理一次,并且这种情况似乎仍然成立。但是,如果您使用httpd.conf文件,则该文件只会被处理一次。
如果使用httpd.conf,另一个好处是可以启用日志记录功能来研究复杂的mod_rewrite指令。要启用日志记录,请在httpd.conf中添加以下内容:
RewriteLog /var/log/apache/rewrite.log
RewriteLogLevel 2