0

我在使用 .htaccess 做我需要做的事情时遇到了一点麻烦。

这是网页的网址:

http://example.com/folder/$1/topic.php?id=$2

唯一改变的两件事是 1 美元和 2 美元。

我正在使用这段代码,但我似乎无法让它与变量文件夹一起使用。

RewriteRule ^([a-zA-Z0-9_-]+)$ topic.php?id=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ topic.php?id=$1
RewriteRule ^folder/$1/([a-zA-Z0-9_-]+)$ folder/$1/topic.php?id=$2
RewriteRule ^folder/$1/([a-zA-Z0-9_-]+)/$ folder/$1/topic.php?id=$2

我可能在语法上犯了一些错误,但我似乎无法弄清楚。

浏览器 URL 将变为如下所示:

http://example.com/folder/$1/topic/$2

谢谢你的时间^.^

4

1 回答 1

2

耶!用户大人。

我认为你需要逃跑 $1,只要给它一些反斜杠忍者拳:

RewriteRule ^folder/\$1/([a-zA-Z0-9_-]+)/$ folder/$1/topic.php?id=$2

或者它可能是:

RewriteRule ^folder/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ folder/$1/topic.php?id=$2

^__^

是的,我需要解释发生了什么,所以左边括号之间的内容变成$了右边,后面的数字$是括号的当前顺序。所以:

#             1st   2nd   3rd        1st────┐    2nd    ┌──────3rd   
RewriteRule ^(.*?)/(.*?)/(.*)$ file.php?p1=$1&p2=$2&p3=$3

这些括号块称为捕获块,它是RegExp。

于 2013-04-22T19:11:22.593 回答