Apache 2.4.54环境下.htaccess中的Rewrite规则不生效问题排查求助
Apache 2.4.54环境下.htaccess中的Rewrite规则不生效问题排查求助
大家好,我最近碰到个棘手的问题,想请各位帮忙排查下。我在/path/to/project/目录下配置了如下的.htaccess文件:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !system RewriteRule ^(.*)/([^/]+)/?$ $1/some/folders/$2.php [PT] </IfModule>
我的目标是把https://example.com/path/to/project/folder的请求,重写转发到https://example.com/path/to/project/some/folders/folder.php。
我知道这类问题已经被讨论过无数次了,但哪怕是写个最基础的RewriteRule ^ /不带任何条件,在当前环境里都完全不起作用。
我已经确认了mod_rewrite模块是启用状态——我在<IfModule>块里加了Header set测试语句,是可以正常生效的。
同时也检查了对应目录的Apache配置,已经设置了AllowOverride All:
<Directory ${APACHE_ROOT_DIR}/path/to/project> AllowOverride All </Directory>
我实在是绞尽脑汁也找不到问题所在,希望有经验的朋友能给我点思路。
更新1:
我在另一台服务器上测试了完全相同的重写规则和文件结构,居然能正常工作!这说明问题大概率出在当前服务器的mod_rewrite本身,或者是虚拟主机(VirtualHost)相关的配置上。
更新2:
我把这段重写规则放到sites-available/default-ssl.conf里后,居然生效了,但放在.htaccess里还是不行。这就很奇怪了——.htaccess里的Header set test test是能正常运行的,mod_rewrite在主配置文件里也能工作,偏偏两者结合起来就失效了...
备注:内容来源于stack exchange,提问作者Play_it
相关产品推荐
相关产品推荐

