【问题标题】:Modify friendly URLs generated by default in Wordpress (via .htaccess)修改 Wordpress 中默认生成的友好 URL(通过 .htaccess)
【发布时间】:2013-12-29 18:41:19
【问题描述】:

我有一个在 Wordpress 中完成的网站,我需要对复杂的 URL 进行一些更改。

我从名为detail 的管理面板创建了一个页面,该页面从模板文件夹中读取模板文件detail.php

当前挂载的 URL 是 http://www.domain.com/detail/1234/,我需要它可以作为 http://www.domain.com/anything/1234/ 访问。

以下几行是由 Wordpress 生成的,但我不理解它们,也不知道如何修改它们以达到我的目的:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

【问题讨论】:

  • 所以你想将/anythinghere/1234重定向到/detail/1234
  • 您是否意识到,如果您这样做,您网站上的所有其他子页面都会损坏? domain.com/anything/1234 到 domain.com/detail/1234?由于所有页面都会重定向?此外,如果您只是想美化您的 URL,那么有很多轻量级/有用的插件可以为您做到这一点。
  • 可以为这个页面制定规则吗?还有其他页面,但没有任何问题
  • @anubhava 此重定向会产生哪个 url?我该怎么做?
  • 其实这是 WP 页面,我不建议搞乱重写规则,因为 WP 对您在 WP 设置中提供的永久链接结构非常严格。

标签: wordpress .htaccess mod-rewrite friendly-url


【解决方案1】:

首先,您应该真正了解这些规则的作用以及您真正想要实现的目标。然后您可以尝试更改系统以满足您的需求。

IfModule 确保仅当存在mod_rewrite Apache 模块时才处理内部的所有内容。所有其他指令都来自这个模块。

  1. RewriteEngine On 启用 URL 重写。
  2. RewriteBase / 告诉引擎规则在根内部运行。另请参阅how RewriteBase works 上的一般问题。
  3. RewriteRule ^index\.php$ - [L] 表示如果要重写的当前 URL 是 index.php,则不应再处理规则 ([L])。不会发生重写。 RewriteRule 指令接受 regex。另请参阅 SO 上的 标签。
  4. 所有RewriteCond 指令都适用于以下RewriteRule。除非添加[OR] 标志,否则必须同时满足它们才能执行规则。在这种情况下,它们的意思是:
    • 请求的资源不是常规文件。
    • 请求的资源不是目录。
  5. 将任何(至少一个字符长)URL 重写为index.php。这是要处理的最后一条 ([L]) 规则。

当添加新的RewriteRules 时,您可能希望使用 WordPress 的方式来执行此操作,如Zac’s answer 中所述。通过类比手册中或此处关于 SO 的许多示例找出正确的规则应该不难。

【讨论】:

    【解决方案2】:

    放入functions.php 可能更好:

    functions.php

    function setRewriteRule($orgRules){
        return array( '/([^/]+)/([0-9]+)/?' => 'index.php?post=$matches[1]' ) + $orgRules;
    }
    
    add_filter('rewrite_rules_array', 'setRewriteRule');
    

    然后你只需要刷新重写规则,我通常使用'rewrite-rules-inspector'插件。

    【讨论】:

    • 如果您使用functions.php,请确保您的主题是子主题,否则它会在主题更新时消失。
    【解决方案3】:

    这应该可以解决您的问题,试一试...您可以编写自己的自定义永久链接而无需添加任何代码,如果有人尝试通过旧 URL 访问该页面,他们将被重定向到新 URL。

    WordPress Custom Permalinks

    安装后,您只需进入页面并在标题下方输入您自己的网址

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-16
      • 2017-02-13
      • 2013-04-28
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 2013-08-31
      • 2012-06-03
      相关资源
      最近更新 更多