You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.htaccess配置URL重写规则在服务器中不生效问题求助

问题排查与修复方案

现有规则的错误点

  • 放在/milan目录下的.htaccess的匹配路径为相对路径(自动去掉当前目录前缀),不会携带开头的/,所以^/(.*)$规则完全匹配不到任何请求
  • 第一条规则使用了R=301强制跳转,会直接暴露public目录的实际路径,不符合隐藏目录的需求,应该使用内部重写
  • 第二条规则的匹配路径多了多余的public前缀,目标路径也没有正确指向public目录下的auth/index.php,同时未配置重写基础路径导致路径解析错误

修复后的配置

第一步:修改/milan/.htaccess内容

RewriteEngine On
# 配置重写基础路径,适配子目录部署
RewriteBase /milan/

# 隐藏public目录:所有请求内部重写到public目录,无跳转
RewriteCond %{REQUEST_URI} !^/milan/public/
RewriteRule ^(.*)$ public/$1 [NC,L]

# 动态参数转静态路径:匹配auth下的静态路径,转发到对应的PHP文件
RewriteRule ^auth/([a-zA-Z0-9_-]+)/?$ public/auth/index.php?page=$1 [QSA,L]

第二步:新增/milan/public/.htaccess(可选,优化体验)

用于禁止直接访问原始带参数的URL,自动跳转至静态路径格式:

RewriteEngine On
RewriteBase /milan/public/

# 原始带参数URL自动301跳转到静态路径
RewriteCond %{QUERY_STRING} page=([a-zA-Z0-9_-]+)
RewriteRule ^auth/index\.php$ /milan/auth/%1/? [R=301,L]

生效验证注意事项

  • 确认Apache已经开启mod_rewrite模块,站点目录的AllowOverride配置设置为All,允许.htaccess文件生效
  • 测试前清空浏览器缓存,之前错误的301跳转规则会被浏览器永久缓存,影响测试结果

内容的提问来源于stack exchange,提问作者Om Prakash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:54:03