nee*_*zer 5 php mod-rewrite logging apache-2.2
这让我发疯。
背景:我正在使用 Mac OS X 10.6 附带的内置 Apache2 和 PHP
我有一个虚拟主机设置如下:
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>
Run Code Online (Sandbox Code Playgroud)
这是在/private/etc/apache2/users/neezer.conf
.
我的代码lobster project
是带有CodeIgniter 框架的PHP 。尝试加载http://lobster.dev:81/给了我:
400 错误请求
通常,我会去检查我的日志,看看是什么原因造成的,但我的日志是空的!我看着这两个/private/var/log/apache2/error_log
和/private/var/log/apache2/lobster_error
,既不记录与我已在400的任何消息LogLevel
设置为debug
在/private/etc/apache2/http.conf
。
删除重写规则可以消除错误,但这些相同的规则适用于我的 MAMP 主机。我已经仔细检查并rewrite_module
加载到我的默认 Apache 安装中。我的http.conf
可以在这里找到:https : //gist.github.com/1057091
是什么赋予了?如果您需要任何其他信息,请告诉我。
注意:我不想将重写规则添加到.htaccess
项目目录中(它已签入 git repo,我不想碰它)。
对于复杂的 mod_rewrite 规则,最好记录事件序列以查看发生了什么。使用RewriteLog执行此操作,并启动RewriteLogLevel以查看详细信息。
mod_rewrite 非常灵活,用rewrite 规则可以做很多事情,也很复杂。局外人在没有看到更广泛的背景的情况下很难调试您的规则。最好的办法是自己调试它。当您在第二个窗口中试验配置更改时,在一个窗口中观察日志。做一个小改动,保存文件,重新加载 apache 并再次点击 URL。重复。
这是 Apache手册中对 RewriteLog 的一个很好的描述:
重写日志
在使用 mod_rewrite 强大而复杂的功能时,几乎总是需要使用 RewriteLog 来帮助调试。此日志文件详细分析了重写引擎如何转换请求。详细程度由 RewriteLogLevel 指令控制。
归档时间: |
|
查看次数: |
27943 次 |
最近记录: |