我有一个依赖于htaccess重写规则的网站,我用这样的序列重写我的网址:
www.example.com/games/car/play/123
实际上没有目录:
每天我看到我的错误日志显示大量错误行说:
File does not exist: /home/example.com/public_html/games
File does not exist: /home/example.com/public_html/car
File does not exist: /home/example.com/public_html/play
我不知道为什么Apache会将这些假目录视为真正的真实目录?我在我的htaccess中有这些重写代码行:
RewriteEngine On
RewriteBase /
RewriteRule ^games/([a-zA-Z0-9-/]+)/play/(.*)$ details.php?slug=$1&id=$2
现在Apache认为:games / slug / play / id是目录,它不仅仅是一个虚假的URL序列。当我下到较低的页面时:
www.example.com/games/car 和 www.example.com/games
它已作为网址存在,但不是目录,我看到错误日志显示:
File does not exist: /home/example.com/public_html/games/car
File does not exist: /home/example.com/public_html/games
我如何解决这个问题?我已经尝试了所有的东西,但我的错误日志中仍然存在大量错误。
非常感谢(抱歉我的英语不好)。
答案 0 :(得分:1)
尝试关闭MultiViews并添加一些条件检查。
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^games/([a-zA-Z0-9-/]+)/play/(.*)$ details.php?slug=$1&id=$2 [L]