使用.htaccess将带动态子目录的URL重写至PHP处理程序
.htaccess 动态子目录URL重写实现方案
直接在根目录的.htaccess文件中添加以下规则即可实现需求:
RewriteEngine On # 排除真实存在的文件和目录,避免重写静态资源 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 匹配带/不带末尾斜杠的URL,转发到对应index.php RewriteRule ^locations/([^/]+)/([^/]+)/files/([^/]+)/?$ locations/$1/$2/files/index.php?id=$3 [L,QSA]
规则说明:
- 匹配模式:
^locations/([^/]+)/([^/]+)/files/([^/]+)/?$([^/]+)分别捕获两个动态子目录和请求的文件名,对应变量$1、$2、$3/?兼容末尾带斜杠和不带斜杠的两种URL格式
- 转发目标:
locations/$1/$2/files/index.php?id=$3- 将请求转发到对应动态子目录下的
files/index.php,并把捕获的文件名作为id参数传递
- 将请求转发到对应动态子目录下的
- 标志位:
[L,QSA]L:匹配后停止后续规则处理QSA:保留原URL的查询字符串(如果有的话),比如原URL带?foo=bar会自动追加到新请求后
内容的提问来源于stack exchange,提问作者Fran922784
相关产品推荐
相关产品推荐

