修改Wordpress中默认生成的友好URL(通过.htaccess)

时间:2013-12-11 16:52:45

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

我在Wordpress中创建了一个网站,我需要对这些网站进行一些更改。

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

当前挂载的网址为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>

3 个答案:

答案 0 :(得分: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'插件。

答案 1 :(得分:2)

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

WordPress Custom Permalinks

安装完成后,您只需进入页面并在标题

下方输入您自己的URL

答案 2 :(得分:2)

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

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

  1. RewriteEngine On启用网址重写。
  2. RewriteBase /告诉引擎规则在root中运行。另请参阅how RewriteBase works上的一般问题。
  3. RewriteRule ^index\.php$ - [L]表示如果要重写的当前网址为[L],则不应再处理任何规则(index.php)。不会重写。 RewriteRule指令接受regex。另请参阅此处的标记。
  4. 所有RewriteCond指令适用于以下RewriteRule。除非添加[OR]标志,否则它们必须同时满足才能执行规则。在这种情况下,它们意味着
    • 请求的资源不是常规文件。
    • 请求的资源不是目录。
  5. 将任何(至少一个字符长)网址重写为index.php。这是要处理的最后一个([L])规则。
  6. 添加新的RewriteRule时,您可能希望使用WordPress的方式执行此操作,如Zac’s answer中所述。通过类比手册中的许多示例或此处的SO来确定正确的规则应该不难。