htaccess重写规则在我的错误日志文件中显示错误

时间:2016-09-15 19:12:11

标签: .htaccess logging url-rewriting rules

我有一个依赖于htaccess重写规则的网站,我用这样的序列重写我的网址:

www.example.com/games/car/play/123

实际上没有目录:

  1. 游戏
  2. 播放
  3. 每天我看到我的错误日志显示大量错误行说:

    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
    

    我如何解决这个问题?我已经尝试了所有的东西,但我的错误日志中仍然存在大量错误。

    非常感谢(抱歉我的英语不好)。

1 个答案:

答案 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]