如何解决Pretty URL的404错误及.htaccess规则冲突问题
解决.htaccess规则冲突导致的404问题
问题核心是规则执行顺序错误:通用的移除.php扩展名规则会优先匹配/create/xxx这类URL,服务器会尝试寻找不存在的/create/xxx.php文件,最终返回404。
正确的.htaccess配置
RewriteEngine On RewriteBase / # 优先处理create的伪静态规则 RewriteRule ^create/([^/]+)$ create.php?id=$1 [NC,L] # 通用的移除.php扩展名规则 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php [NC,L]
关键说明
- 规则顺序:特定伪静态规则必须放在通用规则前面。服务器从上到下执行规则,让
/create/xxx先匹配到对应重写逻辑,直接映射到create.php?id=xxx,不会触发后面的通用规则。 - 参数修正:把原规则中的
app=$1改为id=$1,和你需求中的id参数保持一致。 - 可选:旧URL重定向:如果需要让访问旧URL(
create.php?id=xxx)的用户自动跳转到新伪静态URL,可添加以下永久重定向规则:
# 旧URL永久重定向到新伪静态URL RewriteCond %{QUERY_STRING} ^id=([^&]+)$ RewriteRule ^create\.php$ create/%1? [R=301,L]
验证要点
- 确认
create.php文件存在于网站根目录 - 测试访问
https://myurl.com/create/37744e17-98ff-58a9-8996-7cf746e508b9,检查是否正确传递id参数到create.php
内容的提问来源于stack exchange,提问作者ozonostudio
相关产品推荐
相关产品推荐

