用多个参数重写 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]
如果有人能为我阐明正则表达式的某些部分,将不胜感激:
以下是什么意思?
?:/
?/?
再次感谢大家的帮助:)
我有一个 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]
如果有人能为我阐明正则表达式的某些部分,将不胜感激:
以下是什么意思?
?:/
?/?
再次感谢大家的帮助:)