使用多个参数重写网址

时间:2016-04-08 02:49:10

标签: php .htaccess mod-rewrite url-rewriting clean-urls

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

网址如下:

/index.php?pagetitle=Home

我已设法使用以下内容显示此ID:

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

我也希望能够使用相同的网址,但文章ID

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

我想这样显示:

.com/Home/20

但我似乎无法弄清楚如何让它在多个参数上工作。

更新: 好的,所以我设法让以下工作使用:     的index.php PAGETITLE = $ 1和;条款ArticleID = $ 16

显示为:     的.com /主页/ 20

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

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

所以会显示为:     的.com /主页/ ArticleTitle / 20

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

http://karpium.co.uk/Home/Baits/20 - 此网址正常工作

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

的情况下无法正常工作

2 个答案:

答案 0 :(得分:0)

您可以使用以下规则:

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

答案 1 :(得分:0)

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

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

如果有人可以为我的正则表达式的一些部分提供一些亮点,我将非常感激:

以下是什么意思?

:/

?/?

再次感谢所有帮助:)