Tim*_*imK 10 mod-rewrite debian apache2
在apache2中与mod_rewrite挣扎.问题是当将指令放入httpd.conf时会被忽略.
如果我AllowOverride All在sites-available/default中设置并将指令添加到.htaccess,则它会起作用,并且每个请求都会在mod_rewrite.log中弹出.
但是当我删除.htaccess并将AllowOverride All指令添加到httpd.conf时,它被忽略了.
Httpd.conf看起来像这样:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteLog "/var/log/apache2/mod_rewrite.log"
RewriteLogLevel 4
RewriteRule ^/.* http://www.google.com
</IfModule>
Run Code Online (Sandbox Code Playgroud)
(只需选择谷歌进行调试)
Phpinfo()在加载的模块中显示mod_rewrite,rewrite.load在/ mods-enabled符号链接到mods-available,即它确实存在.此外,当我删除mod_rewrite.log时,它是在服务器启动时创建的,IMO表示读取了httpd.conf并且存在mod_rewrite.c.但mod_rewrite.log保持空白,这表示没有请求发送到mod_rewrite.此外,当将废话放入httpd.conf服务器时,将无法启动并抛出错误.
我错过了什么?有没有像AllowOverride我必须设置甚至主配置文件?
我已经玩过/.htaccess使用相对路径而httpd.conf没有.我也试过设置<Directory>标签,这对我来说没有意义,但仍然试着看看它是否有任何变化......帮助?!
自己想出来,但万一有人遇到同样的问题:
httpd.conf中设置的"全局"重写规则必须包含在每个虚拟主机中
<VitualHost *:80>
RewriteEngine on
RewriteOptions Inherit
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
否则他们将无法在VHost中工作.此外,父规则在子规则之后应用.
| 归档时间: |
|
| 查看次数: |
1786 次 |
| 最近记录: |