mac*_*cha 113 apache .htaccess mod-rewrite
我有一个RewriteRule在.htaccess未采取任何文件.我该如何解决这个问题?
.htaccessApache是否正在读取和遵守该文件?我可以写一个回音"它正在工作"的消息,如果我写它,那条线会被回显出去吗?.htaccess没有使用该文件,我该如何让Apache使用它?.htaccess正在使用但我RewriteRule仍然没有效果,我还可以做多少调试?Thi*_*key 142
输入一些垃圾值即可.htaccess
例如foo bar,sakjnaskljdnas
任何关键字不是htaccess的认可,并访问您的网址.如果它工作,你应该得到一个
500内部服务器错误
内部服务器错误
服务器遇到内部错误或配置错误,无法完成您的请求....
我建议你不久之后再说RewriteEngine on.
因为你在你的机器上.我认为你可以访问apache .conf文件.
打开.conf文件,找一条类似于的行:
LoadModule rewrite_module modules/mod_rewrite.so
Run Code Online (Sandbox Code Playgroud)
如果注释(#),取消注释并重新启动apache.
要记录重写
RewriteEngine On
RewriteLog "/path/to/rewrite.log"
RewriteLogLevel 9
Run Code Online (Sandbox Code Playgroud)
把以上三行放在你的virtualhost.重启httpd.
RewriteLogLevel 9对Level使用较高的值会大大减慢Apache服务器的速度!仅在大于2的级别使用重写日志文件进行调试!9级将记录几乎每个重写细节.
Apache 2.4中的情况发生了变化:
该RewriteLog和RewriteLogLevel指令已被删除.现在通过使用LogLevel指令为mod_rewrite模块配置适当的日志记录级别来提供此功能.另请参见mod_rewrite logging部分.
有关LogLevel的更多信息,请参阅LogLevel指令
你可以完成
RewriteLog "/path/to/rewrite.log"
Run Code Online (Sandbox Code Playgroud)
现在以这种方式
LogLevel debug rewrite_module:debug
Run Code Online (Sandbox Code Playgroud)
cai*_*ona 48
"输入一些垃圾值"的答案对我来说并不起作用,尽管输入了垃圾,我的网站仍在继续加载.
相反,我将以下行添加到.htaccess文件的顶部:
deny from all
Run Code Online (Sandbox Code Playgroud)
如果正在接收.htaccess,这将很快告诉您.如果正在使用.htaccess,则该文件夹中的文件根本不会加载.
jgp*_*s2w 32
通常,.htaccess中的任何更改都应该具有可见效果.如果没有效果,请检查配置apache文件,例如:
<Directory ..>
...
AllowOverride None
...
</Directory>
Run Code Online (Sandbox Code Playgroud)
应该改为
AllowOverride All
Run Code Online (Sandbox Code Playgroud)
并且您将能够更改.htaccess文件中的指令.
也许更合乎逻辑的方法是创建一个文件(例如test.html),添加一些内容,然后尝试将其设置为索引页面:
DirectoryIndex test.html
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,.htaccess规则将覆盖在目录/文件级别工作的Apache配置
要回答三个问题中的第一个问题,查看 .htaccess 文件是否正常工作的一种简单方法是在 .htaccess 文件的顶部触发自定义错误:
ErrorDocument 200 "Hello. This is your .htaccess file talking."
RewriteRule ^ - [L,R=200]
Run Code Online (Sandbox Code Playgroud)
关于您的第二个问题,如果 .htaccess 文件未被读取,则服务器的主要 Apache 配置可能已AllowOverride设置为None. Apache 的文档提供了针对该问题和其他可能阻止 .htaccess 生效的情况的故障排除技巧。
最后,为了回答您的第三个问题,如果您需要调试您在重写规则中引用的特定变量,或者正在使用要独立于规则进行评估的表达式,您可以执行以下操作:
输出您正在引用的变量以确保它具有您期望的值:
ErrorDocument 200 "Request: %{THE_REQUEST} Referrer: %{HTTP_REFERER} Host: %{HTTP_HOST}"
RewriteRule ^ - [L,R=200]
Run Code Online (Sandbox Code Playgroud)
通过将其放入指令来独立测试表达式<If>。这使您可以确保您的表达式在您期望时正确编写或匹配:
<If "%{REQUEST_URI} =~ /word$/">
ErrorDocument 200 "Your expression is priceless!"
RewriteRule ^ - [L,R=200]
</If>
Run Code Online (Sandbox Code Playgroud)
.htaccess 调试愉快!
| 归档时间: |
|
| 查看次数: |
111529 次 |
| 最近记录: |