请求编写支持两级路径结构的URL短链接.htaccess RewriteRule规则
请求编写支持两级路径结构的URL短链接.htaccess RewriteRule规则
嗨,我懂你现在的困扰啦!原来的单级短链接规则跑的好好的,现在想扩展成两级路径结构(比如http://mydomain/l1/stack),把第一部分作为固定的level参数,第二部分传任意字符串当decode值,还要保留phpmyadmin的特殊规则对吧?
我给你调整好了规则,你可以直接用,下面是完整的.htaccess代码:
Options +FollowSymLinks -Indexes -MultiViews RewriteEngine on # 保留原有的phpmyadmin专属规则,确保访问/phpmyadmin不会被重写 RewriteRule ^phpmyadmin$ phpmyadmin [L] # 匹配两级路径:固定level + 任意decode字符串 # 把你需要的固定level值放在(l1|a1)里,多个值用|分隔,比如(l1|a1|test|foo) RewriteRule ^(l1|a1)/([^/]+)$ decoder.php?level=$1&decode=$2 [L] # 如果你还需要保留原来的单级路径规则(比如/stack这类),就保留下面这行;不需要就删掉 RewriteRule ^([\w\d-]{1,})$ decoder.php?decode=$1 [L]
规则解释:
两级路径规则核心:
^(l1|a1)/([^/]+)$^和$分别匹配URL的开头和结尾,确保不会匹配到部分路径(l1|a1)是第一个捕获组,专门匹配你指定的固定level值,你可以根据需求添加更多值,比如(l1|a1|b2|admin)/匹配两级路径之间的斜杠([^/]+)是第二个捕获组,匹配除了斜杠之外的任意非空字符串,完美适配你需要的任意decode内容(包括点号、特殊字符这些)[L]标记表示匹配到这条规则后就停止后续规则处理,避免冲突
单级规则保留:如果你不需要再支持原来的单级短链接,直接删掉最后一行即可,避免和两级规则产生冲突。
测试示例:
- 访问
http://mydomain/l1/stack→ 重写为decoder.php?level=l1&decode=stack - 访问
http://mydomain/a1/wH4tever.→ 重写为decoder.php?level=a1&decode=wH4tever. - 访问
http://mydomain/phpmyadmin→ 依然直接指向phpmyadmin,不受重写影响
备注:内容来源于stack exchange,提问作者m2ts
相关产品推荐
相关产品推荐

