背景:我正在使用内置的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/给了我:
400 Bad Request
通常情况下,我会检查我的日志,看看它是什么造成的,但我的日志是空的!我查看了/ 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非常灵活,可以使用重写规则做很多事情,而且也非常复杂.如果没有看到更广泛的上下文,局外人就无法调试规则.您可以自己调试它最好的事情.在第二个窗口中尝试配置更改时,在一个窗口中查看日志.进行一些小改动,保存文件,重新加载apache并再次点击URL.重复.
以下是Apache manual对RewriteLog的一个很好的描述:
Rewrite Log
When using the powerful and complex features of mod_rewrite,it is almost always necessary to use the RewriteLog to help in debugging. This log file produces a detailed analysis of how the rewriting engine transforms requests. The level of detail is controlled by the RewriteLogLevel directive.