php – Apache2:400错误请求和重写规则,错误日志中没有任何内容
这让我疯了.
背景:我正在使用内置的Apache2& amp; Mac OS X 10.6附带的PHP 我有一个vhost设置如下: NameVirtualHost *:81 <Directory "/Users/neezer/Sites/"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> <VirtualHost *:81> ServerName lobster.dev ServerAlias *.lobster.dev DocumentRoot /Users/neezer/Sites/lobster/www RewriteEngine On RewriteCond $1 !^(index.php|resources|robots.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$index.php/$1 [L,QSA] LogLevel debug ErrorLog /private/var/log/apache2/lobster_error </VirtualHost> 这是在/private/etc/apache2/users/neezer.conf中. 我在龙虾项目中的代码是带有CodeIgniter framework的PHP.试图加载http://lobster.dev:81/给了我:
通常情况下,我会检查我的日志,看看它是什么造成的,但我的日志是空的!我查看了/ private / var / log / apache2 / error_log和/ private / var / log / apache2 / lobster_error,并且都没有记录任何与400相关的消息.我将LogLevel设置为调试/ private / etc / apache2 / http.conf的. 删除重写规则可以消除错误,但这些相同的规则适用于我的MAMP主机.我已经进行了双重检查,并在我的默认Apache安装中加载了rewrite_module.我的http.conf可以在这里找到:https://gist.github.com/1057091 是什么赋予了?如果您需要任何其他信息,请与我们联系. 注意:我不想将重写规则添加到项目目录中的.htaccess(它被检入git仓库并且我不想触摸它).
对于复杂的mod_rewrite规则,记录事件序列以查看发生的情况是个好主意.使用
RewriteLog执行此操作,并启动
RewriteLogLevel以查看详细信息.
mod_rewrite非常灵活,可以使用重写规则做很多事情,而且也非常复杂.如果没有看到更广泛的上下文,局外人就无法调试规则.您可以自己调试它最好的事情.在第二个窗口中尝试配置更改时,在一个窗口中查看日志.进行一些小改动,保存文件,重新加载apache并再次点击URL.重复. 以下是Apache manual对RewriteLog的一个很好的描述:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |