我在虚拟主机中有一个非常简单的重写规则:
RewriteRule ^/?([^.]+)\.([^(htm)]+)$ /$1.htm [L,QSA]
RewriteRule ^/(someotherrule)$ /me [L]
拨打电话:http://myurl.com/test.php
我希望规则匹配并将网址重写为http://myurl.com/test.htm
相反,我在我的rewriteLog中找到了这个:
applying pattern '^/?([^.]+)\\.([^(htm)]+)$' to uri '/test.php'
applying pattern '^/(someotherrule)$' to uri '/test.php'
rewrite '/test.php' -> '/me'
显然我的第一次重写规则模式有问题,但我看不清究竟是什么。可能是因为我的大脑因缺乏睡眠而结。因此,如果有人愿意花一点时间来指出我的错误,我会非常感激。
答案 0 :(得分:0)
您应该替换第一条规则,结果是:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^[^.]+\.htm$ [NC]
RewriteRule ^/?([^.]+)\..*$ /$1.htm [L,QSA]
RewriteRule ^/(someotherrule)$ /me [L]
错误位于 [^(htm)] ,这意味着文件扩展名不包含字符:(,h,t,m,),而不是您所期望的.htm。