我正在使用apache的mod重写来制作“漂亮的网址”,这是一个规则的例子:
RewriteRule ^articles/(.+?)\.([0-9]+)/page\=([0-9]+)?$ /index.php?module=articles_full&aid=$2&title=$1&page=$3 [N,NC,QSA]
问题是我的错误日志填满了这样的东西:
[Fri Feb 01 20:36:11 2013] [error] [client 94.246.88.189] File does not exist: /home/gamingon/public_html/articles
[Fri Feb 01 20:35:55 2013] [error] [client 66.249.73.195] File does not exist: /home/gamingon/public_html/articles
[Fri Feb 01 20:34:39 2013] [error] [client 66.249.73.195] File does not exist: /home/gamingon/public_html/articles
什么是阻止错误的最佳方法?它似乎工作正常,但我仍然不认为错误日志应该填写?
答案 0 :(得分:0)
添加一个RewriteCond,只有在文件不存在时才会启动RewriteRule:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^articles/(.+?)\.([0-9]+)/page\=([0-9]+)?$ /index.php?module=articles_full&aid=$2&title=$1&page=$3 [N,NC,QSA]
编辑:
再次查看重写规则,它是一个非常具体的正则表达式,只有在uri格式为
时才匹配因此,它会匹配以下网址:
但不在以下网址上:
如果你看到404,那么很可能有人试图访问第二种形式的网址。可能是您的网站有一些未正确创建的链接,请检查日志以查看是否可以找到任何引用来帮助追踪问题。
我测试了你的规则,当我给它一个格式正确的URL时,它对我来说很好。