[英].htaccess RewriteRule outputs wrong parameter result
我正在尝试使用.htaccess RewriteRule美化一些url,但是我有一个无法解决的问题。 我写了这个:
RewriteEngine On
RewriteRule ^(.*)/(foro|forum)$ code/forum/forum.php?id=$1
RewriteRule ^(.*)/(foro|forum)/(.*)$ code/forum/forum.php?id=$1&subf=$3
RewriteRule ^(.*)/(foro|forum)/(.*)/(.*)$ code/forum/forum.php?id=$1&subf=$3&post=$4
第一次url重写正常工作,结果显示id参数(即localhost / web / user501 / forum-> id = user501)。 与第二个相同(localhost / web / user501 / forum / 3-> id = user501,subf = 3)。
但是,当我尝试第三次重写URL时,输出ID并不是我期望的“ user501”,而是“ code / forum / forum.php”。 其他变量的输出是正常的(localhost / web / user501 / forum / 3/5-> id = code / forum / forum.php,subf = 3,post = 5)。
我试图将该URL重写的第一个(。*)更改为一个固定的单词...它确实有效,但不幸的是,我需要将它变成一个可更改的单词。
有人知道发生了什么吗?
这是因为^(.*)/(foro|forum)/(.*)/(.*)$
模式也与code/forum/forum.php
匹配,因此RewriteRule
再次运行并为您提供了写入结果。
试试这个代码:
RewriteEngine On
# ignore /code/forum/forum.php
RewriteRule ^code/forum/forum\.php$ - [L,NC]
RewriteRule ^(.*)/(foro|forum)$ code/forum/forum.php?id=$1 [L,QSA]
RewriteRule ^(.*)/(foro|forum)/(.*)$ code/forum/forum.php?id=$1&subf=$3 [L,QSA]
RewriteRule ^(.*)/(foro|forum)/(.*)/(.*)$ code/forum/forum.php?id=$1&subf=$3&post=$4 [L,QSA]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.