LKM*_*LKM 5 mod-rewrite rewrite .htaccess apache-2.2
我的 .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 文件中删除这两行,我才能得到第一个规则来立即处理请求。
任何帮助将不胜感激。
您的规则表明了这些程序:
\n\n\n如果 URL 仅是数字,请转到测试版 URL,后跟这些数字并停止。
\n如果您访问domain1,请转到domain2 处的相同URL 并停止。
\n
当遇到anL
或者规则完成时,处理结束。发生的任何其他事情都是来自浏览器的新连接。这可能是让您感到困惑的\xe2\x80\x94顺序很重要,然后是匹配。L
当他们井然有序时,他们应该解决你遇到的问题:
\n\n\n
RewriteEngine on
\n
RewriteRule ^([0-9]+)$ /beta/forward.php?id=$1 [L]
# 处理结束 [L] 如果它只是数字\n
RewriteCond %{HTTP_HOST} ^domain1\\.net$ [NC]
# 如果domain1.net\xe2\x80\xa6 不区分大小写匹配\n
RewriteRule ^(.*)$ http://domain2.net/$1 [R=301,L]
# 重定向到domain2.net。结束[L]
归档时间: |
|
查看次数: |
8099 次 |
最近记录: |