我的 .htaccess 文件中有许多 RewriteRules。但是,只有在删除另一条特定规则时才会执行一条特定规则,而不管我如何对这两条规则进行排序。
这是似乎具有“较低”优先级的规则:
RewriteRule ^([0-9]+)$ /beta/forward.php?id=$1 [L]
Run Code Online (Sandbox Code Playgroud)
这是始终优先的规则:
RewriteCond %{HTTP_HOST} ^domain1\.net$ [NC]
RewriteRule ^(.*)$ http://domain2.net/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
domain1 和 domain2 实际上都指向同一个网站。因此,每当两个规则都在 .htaccess 文件中并且我访问
http://domain1.net/123
Run Code Online (Sandbox Code Playgroud)
第二条规则首先执行,我得到两次重定向,首先重定向到http://domain2.net/123,然后(当主机名不再适合第二条规则时)重定向到http://domain2.net/beta/ forward.php?id=123。我已经尝试修复第二条规则,因此它永远不会对只包含数字的 url 执行,但我一定是做错了什么,因为它仍然会被执行:
RewriteCond %{HTTP_HOST} ^ domain1\.net$ [NC]
RewriteRule ^(.*[^0-9]+.*)$ http://domain2.net/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
只有从 .htaccess 文件中删除这两行,我才能得到第一个规则来立即处理请求。
任何帮助将不胜感激。