友好的URL和?标签

问题描述 投票:0回答:2

我有以下结构:

RewriteRule ^page/([a-z0-9-]+)?$ page.php?pagename=$1 [NC,L]
RewriteRule ^page/([a-z0-9-]+)/?$ page.php?pagename=$1 [NC,L]

我可以通过网址到达名为“talk”的页面:

site.com/page/talk
site.com/page/talk/

没关系,但我想动态添加一些选项,我不想创建更多的重写规则,我想在同一个链接中使用正常的GET,如:

site.com/page/talk/?fontsize=15

我怎么能这样做?

还有,有什么方法可以使用下面这样的东西吗?

RewriteRule ^pages/order-([a-z0-9-]+)/?$ pages.php?order=$1 [NC,L]

我试过但不能这样做。

谢谢。

regex apache .htaccess url friendly-url
2个回答
1
投票

我忘了这个老问题,现在我需要的时候?参数,我使用QSA标志。

RewriteRule ^page/([a-z0-9-]+)(/?)$ page.php?pagename=$1 [QSA,NC,L]

我通过使用(/?)将两个规则简化为一个,这意味着它可以具有/和结束,并且QSA标志附加了?值到最后,如下例所示:

page/home?debug=true

导致:

page.php?pagename=$1&debug=true

0
投票

对于第一部分,您可以移动原始查询字符串以与新查询字符串合并。不幸的是,由于所述查询字符串的布局方式,这必须在单独的规则中完成。在其他新闻中,你的正则表达式似乎有点格格不入。这是新的:

RewriteRule ^page(?:/([a-z0-9\-]+))?/?$ page.php?pagename=$1 [NC,L]
RewriteRule ^page(?:/([a-z0-9\-]+))?/?\?(.*)$ page.php?pagename=$1&$2 [NC,L]

看看前两个如何合并成一个?

© www.soinside.com 2019 - 2024. All rights reserved.