Mod rewrite 一起使用时,重写规则行为会发生更改

Mod rewrite 一起使用时,重写规则行为会发生更改,mod-rewrite,apache2,Mod Rewrite,Apache2,当单独使用时,下面的每个规则集都可以正常工作。但是,当一起使用时,规则的行为会发生变化 当自己使用规则集#2时,Apache会在浏览器不知情的情况下将对的请求重写为sapphire/main.php。这是预期的行为 当两个规则集一起使用时,对前面提到的URL的请求将导致Apache向发送301重定向 为什么Apache发送这个重定向而不是进行内部重写 L标志导致重新注入已重写的URL。因此,请尝试分析原始请求的URL: RewriteCond %{SERVER_PORT} =443 Rewrit

当单独使用时,下面的每个规则集都可以正常工作。但是,当一起使用时,规则的行为会发生变化

当自己使用规则集#2时,Apache会在浏览器不知情的情况下将对的请求重写为sapphire/main.php。这是预期的行为

当两个规则集一起使用时,对前面提到的URL的请求将导致Apache向发送301重定向

为什么Apache发送这个重定向而不是进行内部重写

L标志导致重新注入已重写的URL。因此,请尝试分析原始请求的URL:

RewriteCond %{SERVER_PORT} =443
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /Security[/?\ ]
RewriteRule (.*) http://internal/$1 [R=301,L]

谢谢,秋葵。你的回答给了我解决这个问题的线索。我将这一行添加到规则集#1:RewriteCond%{REQUEST_URI}^/sapphire/main.php$
RewriteCond %{SERVER_PORT} =443
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /Security[/?\ ]
RewriteRule (.*) http://internal/$1 [R=301,L]