我在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>
答案 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访问该页面,它们将被重定向到新的。
安装完成后,您只需进入页面并在标题
下方输入您自己的URL答案 2 :(得分:2)
首先,您应该真正理解这些规则正在做什么以及您真正想要实现的目标。然后,您可以尝试更改系统以满足您的需求。
IfModule
确保仅在存在mod_rewrite Apache模块时处理内部的所有内容。所有其他指令都来自这个模块。
RewriteEngine On
启用网址重写。RewriteBase /
告诉引擎规则在root中运行。另请参阅how RewriteBase
works上的一般问题。RewriteRule ^index\.php$ - [L]
表示如果要重写的当前网址为[L]
,则不应再处理任何规则(index.php
)。不会重写。 RewriteRule
指令接受regex。另请参阅此处的regex标记。RewriteCond
指令适用于以下RewriteRule
。除非添加[OR]
标志,否则它们必须同时满足才能执行规则。在这种情况下,它们意味着
index.php
。这是要处理的最后一个([L]
)规则。添加新的RewriteRule
时,您可能希望使用WordPress的方式执行此操作,如Zac’s answer中所述。通过类比手册中的许多示例或此处的SO来确定正确的规则应该不难。