首先检查Apache是否启用mod_rewrite模块,通过命令sudo a2enmod rewrite启用并重启Apache;随后确认虚拟主机配置中AllowOverride设置为All以允许.htaccess覆盖;接着验证项目根目录下.htaccess文件存在且权限为644,并测试重写规则是否生效;若使用Nginx,则需在server块中直接配置rewrite规则,运行sudo nginx -t测试配置后重启服务;最后检查PHP运行模式,确保PHP-FPM环境下PATH_INFO变量被正确传递,保障框架对重写路径的解析。

如果您在开发PHP应用时配置了URL重写规则,但发现页面仍按原始路径访问,则可能是由于服务器未正确解析重写规则。以下是排查与配置的详细步骤:
本文运行环境:Dell XPS 13,Ubuntu 22.04
URL重写功能依赖于Apache的mod_rewrite模块,若该模块未启用,所有重写规则将无效。
1、打开终端,执行命令 sudo a2enmod rewrite 启用模块。
立即学习“PHP免费学习笔记(深入)”;
2、重启Apache服务以应用更改:sudo systemctl restart apache2。
3、确认模块已加载,可运行 apache2ctl -M | grep rewrite 查看输出中是否包含rewrite_module。
即使启用了mod_rewrite,如果虚拟主机配置中未允许.htaccess覆盖,默认的重写规则也不会生效。
1、编辑站点对应的虚拟主机配置文件,通常位于 /etc/apache2/sites-available/000-default.conf 或自定义配置文件。
2、在对应目录节点(如 zuojiankuohaophpcnDirectory "/var/www/html">)内添加如下内容:
AllowOverride All
Require all granted
3、保存后再次重启Apache服务确保配置载入。
.htaccess文件是存放URL重写规则的关键文件,必须确保其存在且语法正确。
1、检查项目根目录下是否存在名为 .htaccess 的文件。
2、确认文件权限设置为644,可通过命令 chmod 644 .htaccess 修改。
3、在文件中添加一条测试规则,例如:
    RewriteEngine On
    RewriteRule ^test$ index.php [L]
然后访问 /test 路径,观察是否跳转到index.php。
Nginx不支持.htaccess文件,所有重写规则需直接写入服务器配置中。
1、打开Nginx站点配置文件,一般位于 /etc/nginx/sites-available/default。
2、在server块中添加rewrite指令,例如:
    location / {
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php?$1 last;
        }
    }
3、测试配置有效性:sudo nginx -t,无误后重启Nginx服务。
某些PHP部署方式(如FastCGI)可能影响PATH_INFO的获取,导致框架无法解析重写后的路径。
1、创建一个phpinfo.php文件并访问,查看“Server API”项确认PHP运行模式。
2、若使用PHP-FPM,需确保Nginx或Apache正确传递PATH_INFO变量。
3、对于Nginx,在location块中应使用 $fastcgi_path_info 并设置fastcgi_param SCRIPT_FILENAME正确指向脚本文件。
以上就是为什么PHP代码中的URL重写不生效_PHP URL重写不生效问题排查与配置教程的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
 
                 
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号