如何使用.htaccess从WordPress的url中删除单词?

时间:2014-06-23 作者:dcp3450

在我正在创建的站点中,有一种称为“焦点”的帖子类型。因为他们需要urlwww.mysite.com/focus/page-post-name 我把post-type-slug作为“focus”。

当然,归档页面是www.mysite.com/focus 这导致了一个问题,因为我需要一个特定的页面作为归档页面。元框用于构建和向页面添加设置。我不能只创建一个名为“焦点”的页面,因为这是由帖子类型保留的。

我的想法是创建一个名为“我们的焦点”的页面,并生成www.mysite.com/our-focus.

我只想从该url中删除“我们的-”,以显示存档正在使用。

我尝试将has\\u archive设置为false,但这只是恢复到使用存档。php页面。

2 个回复
SO网友:Ethan O\'Sullivan

您可以将以下内容添加到.htaccess 文件位于<IfModule mod_rewrite.c> 标签:

RewriteCond %{HTTP_HOST}
RewriteRule ^our-focus/(.*)$ /focus/$1 [R=301,L]
您的.htaccess 应如下所示:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# Custom Rewrite
RewriteCond %{HTTP_HOST}
RewriteRule ^our-focus/(.*)$ /focus/$1 [R=301,L]
</IfModule>
# END WordPress
因此,它将执行以下操作:

http://example.com/our-focus/test
重定向到:

http://example.com/focus/test

SO网友:Tim McClure

如果我理解正确的话,您有一个使用/focus slug的post类型,但您希望一个名为我们的focus的普通页面使用该slug。无论是否启用存档,都需要重写自定义帖子类型的slug以使用该页面。

如果您在主题函数中创建了自定义帖子类型。php文件,您可以使用“rewrite”参数设置另一个slug。例如:

add_action(\'init\', \'register_cpt\');
function register_cpt() {
register_post_type(\'focus\', array(
\'label\' => \'Focus\',
\'rewrite\' => array(\'slug\' => \'REWRITE-SLUG\', \'with_front\' => true),
)
) ); }
用您选择的SLUG替换“REWRITE-SLUG”。

See this Codex page for more info.

使用。htaccess重写本身无法工作,因为该段代码仍将与自定义post类型的段代码冲突。您需要为自定义帖子类型重写slug,然后只需将页面编辑屏幕中的永久链接更改为/焦点即可。无需编辑。htaccess文件。

结束

相关推荐

带身份验证的.htaccess怎么会突然出现或改变呢?

当我试图将一条评论标记为垃圾邮件时,我看到了一个基本的htaccess登录名。我无法登录,然后我想起我没有基本的登录:我的.htaccess 在wp-admin 文件夹does是允许的IP的白名单。在查看文件时,我发现我现在在我的wp-admin/.htaccess 设置基本身份验证(由于某种原因,用户/密码文件位于/dev/null)我的根访问文件中还有额外的行(/.htaccess) 包含另一个基本身份验证行,指向根目录中的密码文件。这两个文件都是5日创建/修改的,但不是我自己创建/修改的</密