繁体   English   中英

.htaccess RewriteRule输出错误的参数结果

[英].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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM