1

假设我有这个网址:

http://mywebsite.com/forum/thread/129

我想重写为:

http://mywebsite.com/index.php?area=forum&page=thread&threadid=129

在不定义每个可能的子目录组合的情况下如何实现这一点?

这是我尝试过的:

RewriteRule ^(.*)/(.*)/(.*)$    index.php?area=$1&page=$2&threadid=$3   [NC,L]

和其他一些尝试,都是徒劳的。

这就是我最终得到的(并且有效):

RewriteRule ^forum/?$                       index.php?area=forum                                [NC,L]
RewriteRule ^forum/thread/?$                index.php?area=forum&page=thread                [NC,L]
RewriteRule ^forum/thread/(.*)/?$       index.php?area=forum&page=thread&threadid=$1            [NC,L]

我怎样才能实现我想做的事情?

URL 参数可以留空。我的脚本将忽略它们。

4

1 回答 1

1

试试这个规则:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)(?:/([^/]*)(?:/([^/]*))?)?/?$ /index.php?area=$1&page=$2&threadid=$3 [QSA,L]

认为它不清楚你的意思是什么:Is there some regex that will only try and match the next sub-directory if it matches the first one?

于 2013-11-07T10:10:22.007 回答