【问题标题】:friendly URL and ? tag友好的 URL 和 ?标签
【发布时间】:2016-10-08 01:33:05
【问题描述】:

我有以下结构:

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


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

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

      看看前两个是如何合并为一个的?

      【讨论】:

      • 我可以看到它合并了,但是我用我的 Xampp 进行了测试,它不起作用。未找到 在此服务器上未找到请求的 URL /page/pagenametwo/。 Apache/2.4.9 (Win64) PHP/5.5.12 服务器在 localhost 端口 80
      • still 在此服务器上未找到请求的 URL /revenda/page/pagename。 '-'
      • 不过,这似乎应该匹配。
      • 为什么? .htaccess 文件位于 revenda 文件夹下
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 2020-12-05
      • 2015-12-16
      • 2010-10-22
      • 1970-01-01
      • 2013-02-03
      • 2012-09-16
      相关资源
      最近更新 更多