Yii2在Apache下配置Pretty Url伪静态出现500错误如何解决
故障根本原因
本次500错误完全是.htaccess重写规则逻辑错误导致的,核心问题有4个:
- 无差别路径拼接触发循环:原规则中
RewriteRule ^(.*)$ frontend/web/$1 [L]没有加任何前置判断,所有请求都会被强制拼接frontend/web前缀,重写生成的新请求会再次触发.htaccess规则,反复叠加路径前缀,和错误日志中无限拼接/frontend/web的现象完全吻合。 - 条件逻辑恒真失效:原规则最后一组重写条件里的
RewriteCond %{REQUEST_FILENAME} !-f [OR]逻辑完全错误,OR连接的“不是文件 或者 不是目录”判断永远成立——没有任何路径能同时是存在的文件和存在的目录,相当于完全跳过了真实文件/目录的校验,哪怕已经定位到真实静态资源的请求也会被继续重写,直接触发循环。 - 文件放置位置错误:你写的规则是基于项目根目录(和frontend、backend平级)的路径逻辑,但把.htaccess放在了frontend目录下,导致重写基准路径计算错误,进一步加剧路径拼接异常。
- 冗余规则干扰:原规则中重复写了静态资源匹配判断、重复的js路径校验,还有多余的URI前缀判断,都会干扰重写逻辑的正常执行。
修复方案
按以下步骤调整即可恢复正常:
- 把.htaccess文件从
frontend目录移动到项目根目录,和frontend、backend文件夹处于同一层级。 - 清空原.htaccess的全部内容,替换为修正后的重写规则:
<IfModule mod_rewrite.c> Options +SymLinksIfOwnerMatch RewriteEngine On # 后台admin路由与静态资源转发 RewriteCond %{REQUEST_URI} ^/admin RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L] RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L] RewriteRule ^admin/js/(.*)$ backend/web/js/$1 [L] RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css|js)/ RewriteCond %{REQUEST_URI} ^/admin RewriteRule ^.*$ backend/web/index.php [L] # 前台静态资源转发 RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L] RewriteRule ^css/(.*)$ frontend/web/css/$1 [L] RewriteRule ^js/(.*)$ frontend/web/js/$1 [L] RewriteRule ^images/(.*)$ frontend/web/images/$1 [L] # 前台入口转发:仅当请求路径不是真实存在的文件/目录时,才转发到index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ frontend/web/index.php [L] </IfModule>
- 分别在
frontend/web、backend/web目录下新建.htaccess文件,写入隐藏入口的规则,这是Yii2 Pretty URL生效的必要配置:
<IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ index.php [L] </IfModule>
- 最后检查Apache全局配置:
- 确认
httpd.conf中LoadModule rewrite_module modules/mod_rewrite.so行没有被注释,mod_rewrite模块已启用。 - 确认项目根目录对应的
<Directory>配置块中AllowOverride All已开启,否则.htaccess规则不会被Apache读取执行。
配置完成后重启Apache服务,500错误会消失,Pretty URL功能可正常生效。
内容的提问来源于stack exchange,提问作者Tomas Grecio Ramirez
相关产品推荐
相关产品推荐

