我无法让 URL 重写正常工作。我尝试了所有我能想到的方法。我检查了所有可能将 AllowOverride 设置为 None 的地方,并将其更改为 All。mod_rewrite 本身已启用,我已多次重启 Apache。我的 vhost 如下所示
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.abc.ac.uk
ServerAlias www.abc.ac.uk
DocumentRoot /var/www/testRewrite
RewriteEngine ON
RewriteRule ^/test /TestMe.html
<Directory /var/www/testRewrite>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
RewriteLogLevel 8
RewriteLog /var/log/rewrite.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
请求未转发到 TestMe.html。rewrite.log 为空。我做错了什么,如何调试?
答案1
您是否尝试过将重写规则放入Directory
部分内VirtualHost
?
您也可以尝试指定重写库
答案2
这是在 .htaccess 文件中吗?如果是,则 RewriteRule 中不应包含首字母/
。这个已经困扰我好几次了。
如果不是,调试 mod_rewrite 的第一步是打开日志记录。具体如何操作取决于您运行的是 apache 2.4 还是较旧的版本。
您可能还会发现一些帮助这是常见的 mod_rewrite 问题列表。