如何将localhost/website/index.php?pages=pages/login.php重写为localhost/website/login?遇404错误
Apache URL重写404问题修复
你的配置核心问题是RewriteBase路径错误,同时重写规则缺少必要的.php后缀,导致服务器无法正确定位资源。修正后的配置如下:
RewriteEngine On RewriteBase /website/ # 跳过真实存在的文件或目录,避免干扰正常访问 RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] # 将/xxx重写为index.php?pages=pages/xxx.php RewriteRule ^([^/]+)/?$ index.php?pages=pages/$1.php [NC,L,QSA]
关键调整说明:
- RewriteBase修正:将
/Domain/改为/website/,与你的站点实际根路径保持一致,确保重写规则基于正确的目录生效 - 添加.php后缀:原目标参数是
pages/login.php,而URL中只传入了login,因此需要在规则中补全.php后缀,让服务器能正确解析参数对应的文件 - 保留文件/目录跳过规则:确保真实存在的文件(如css、js)和目录不会被重写,维持站点正常资源访问
内容的提问来源于stack exchange,提问作者Mika
相关产品推荐
相关产品推荐

