【问题标题】:htaccess URL rewrite pattern formathtaccess URL 重写模式格式
【发布时间】:2015-10-13 12:53:41
【问题描述】:

我仔细研究了所有其他 htaccess url rewrite 问题,但所有这些问题都与我的问题相反。

我正在开发的网站从 WordPress 中的子页面获取内容,并将它们显示为父页面上的锚定部分。该站点现在的问题是,如果 Google(或内置搜索,尽管这可能在模板中完成)链接到其中一个子页面,它将引导用户到单个页面而不是父页面的正确部分页面。

我希望提出一个 URL 重写模式,它将 URL 重新格式化为我需要的格式,但它似乎不起作用......我知道那是因为我做错了!

需要重写的 URL 是这样的:

website.com/parent-page/child-page/

我需要将其重写为:

website.com/parent-page/?subpage=child-page

我最初的尝试看起来像这样,但我知道我误解了如何格式化模式。

RewriteRule ^/$1?subpage=$2      ^/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/$

谁能帮助正确格式化或指出我哪里出错了?

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    你可以使用:

    RewriteEngine on 
    # If the request is not for a valid file/directory
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^/]+)/([^/]+)/?$ /$1/?subpage=$2   [QSA,L]
    

    htaccess RewriteRule 第一个 uri 中没有初始 /
    和可选的最终/

    【讨论】:

    • 谢谢,Croises...它似乎对我不起作用,但这更有可能与网站有关 - 但是,我设法创建了一个 PHP 重定向,似乎代替工作!
    • 立即尝试RewriteEngine on
    【解决方案2】:
    RewriteRule    ^([^/]+)/([^/]+)/$        /$1/?subpage=$2   [L]
    

    【讨论】:

    • 谢谢,杰里米......它似乎对我不起作用,但这更有可能与网站有关 - 但是,我设法创建了一个 PHP 重定向,似乎代替工作!
    • 好的,但是在 Apache 级别处理它可能比 PHP 重定向更具可扩展性。我还修复了我的重写规则以删除初始斜线,感谢 Croises。
    【解决方案3】:

    htaccess 重写似乎不起作用,所以我创建了一个 PHP 重定向,而是通过获取页​​面 slug、页面父永久链接并将两者混合在一起。

    我认为这不是最优雅的解决方案,但它确实有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-19
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      相关资源
      最近更新 更多