用多个参数重写 URL

Rewrite URL with multiple parameters

我有一个 URL 有时会有一个或多个参数,我希望能够相应地重写。

URL条如下:

/index.php?pagetitle=Home

我已经设法让这个 URL 显示我想要使用以下内容的方式:

/Home
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([0-9a-zA-Z]+) index.php?pagetitle= [NC,L]

我也希望能够拥有相同的URL,但文章ID

.com/index.php?pagetitle=Home&articleid=20

我想这样显示:

.com/Home/20

但我似乎无法弄清楚如何让它对多个参数起作用。

更新: 好的,所以我设法让下面的工作使用: index.php?pagetitle=$1&articleid=$2

显示为: .com/Home/20

我尝试更进一步,并且能够使用文章标题以及我尝试的规则如下。

RewriteRule ^([0-9a-zA-Z]+)(?:/([0-9a-zA-Z]+))(?:/([0-9]*))?/?$ index.php?pagetitle=&articletitle=&articleid= [NC,L,QSA]

所以会显示为: .com/Home/ArticleTitle/20

但它不想为我工作有没有人知道我做错了什么并提前再次感谢。

http://karpium.co.uk/Home/Baits/20 - 这个 Url 有效

http://karpium.co.uk/Home - 但是这个 url 在使用 pagetitle= 和 articleid=

时不起作用

您可以使用以下规则:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([0-9a-zA-Z]+)(?:/([0-9]*))?/?$ index.php?pagetitle=&articleid= [NC,L,QSA]

好的,看来我已经使用 3 种不同的重写规则修复了它,如下所示:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([0-9a-zA-Z]+)$ index.php?pagetitle= [NC,L,QSA]
RewriteRule ^([0-9a-zA-Z]+)(?:/([0-9a-zA-Z]+))?/?$ index.php?pagetitle=&articletitle= [NC,L,QSA]
RewriteRule ^([0-9a-zA-Z]+)(?:/([0-9a-zA-Z]+))(?:/([0-9]*))?/?$ index.php?pagetitle=&articletitle=&articleid= [NC,L,QSA]

如果有人能为我阐明正则表达式的某些部分,将不胜感激:

以下是什么意思?

?:/

?/?

再次感谢大家的帮助:)