如何debugging.htaccess RewriteRule无法正常工作
我有一个.htaccess
文件中的RewriteRule
没有做任何事情。 我如何解决这个问题?
- 我如何validation
.htaccess
文件是否被Apache读取和遵守? 我可以写一个回应“它正在工作”的消息,如果我写它,那条线会在哪里回应? - 如果
.htaccess
文件没有被使用,我怎样才能让Apache使用它? - 如果正在使用
.htaccess
,但我的RewriteRule
仍然没有效果,我还能做些什么来debugging?
在你的.htaccess
input一些垃圾值,例如foo bar
, sakjnaskljdnas
任何没有被htaccess识别的关键字,并访问你的URL。 如果它正在工作,你应该得到一个
500内部服务器错误
内部服务器错误
服务器遇到内部错误或configuration错误,无法完成您的请求….
我build议你在RewriteEngine on
之后马上把它放好。
既然你在你的机器上。 我认为你有访问Apache的.conf
文件。
打开.conf
文件,然后查找类似于以下内容的行:
LoadModule rewrite_module modules/mod_rewrite.so
如果它被评论(#),取消注释并重新启动Apache。
要logging重写
RewriteEngine On RewriteLog "/path/to/rewrite.log" RewriteLogLevel 9
把上面的3行放在你的virtualhost
。 重启httpd。
RewriteLogLevel 9
使用较高的Level值会显着减慢Apache服务器的速度! 使用大于2的级别的重写日志文件仅用于debugging! 级别9将logging几乎每个重写的细节。
UPDATE
Apache 2.4中的事情已经改变了:
从2.2升级到2.4
RewriteLog和RewriteLogLevel指令已被删除。 现在通过使用LogLevel指令为mod_rewrite模块configuration适当的日志logging级别来提供此function。 另请参阅mod_rewrite日志logging部分。
有关LogLevel的更多信息,请参阅LogLevel指令
你可以完成
RewriteLog "/path/to/rewrite.log"
现在就这样
LogLevel debug rewrite_module:debug
“进入一些垃圾价值”的答案没有为我做的伎俩,我的网站是继续加载尽pipe进入垃圾。
相反,我将以下行添加到.htaccess文件的顶部:
deny from all
这将很快让你知道,如果.htaccess正在拾起或不。 如果正在使用.htaccess文件夹中的文件将不会加载。
通常,.htaccess中的任何更改都应该具有可见的效果。 如果没有效果,请检查您的configurationapache文件,如:
<Directory ..> ... AllowOverride None ... </Directory>
应该改成
AllowOverride All
你可以在.htaccess文件中修改指令。
也许更合理的方法是创build一个文件(如test.html),添加一些内容,然后尝试将其设置为索引页面:
DirectoryIndex test.html
在大多数情况下,.htaccess规则将覆盖在目录/文件级别工作的Apacheconfiguration
如果你有访问Apache的bin目录,你可以使用,
httpd -M
首先检查加载的模块。
info_module (shared) isapi_module (shared) log_config_module (shared) cache_disk_module (shared) mime_module (shared) negotiation_module (shared) proxy_module (shared) proxy_ajp_module (shared) rewrite_module (shared) setenvif_module (shared) socache_shmcb_module (shared) ssl_module (shared) status_module (shared) version_module (shared) php5_module (shared)
之后,像Options -Indexes
或deny from all
这样简单的指令将巩固.htaccess工作正常。
为什么不在你的.htaccess文件中join一些垃圾,并尝试重新加载apache。 如果Apache无法启动,你知道它的工作。 删除垃圾,然后重新加载Apache,如果它加载恭喜你正确configuration.htaccess。