如何将博客文章的URL前缀设置为mysite.com/blog/%postname%/,同时允许作者仍然位于mysite.com/Authors/%Nicename%?

时间:2012-06-20 作者:ZachM

我尝试了很多方法,但都找不到有效的解决方案。

我希望我的网站具有以下结构:

mysite.com/ = homepage
mysite.com/blogs/ = blog archive
mysite.com/blogs/year/ = blog archive (in a specific year)
mysite.com/blogs/year/month/ = blog archive (in a specific month)
mysite.com/blogs/year/month/postname = blog post
mysite.com/authors/ = authors archive
mysite.com/authors/nicename = author profile
mysite.com/customposttype/ = custom post type archive
mysite.com/customposttype/postname = custom post type post
目前,使用/blogs/%year%/%month%/%postname%/ 设置为permalink结构,除作者部分外,所有内容都正常工作。它迫使它mysite.com/blogs/authors/mysite.com/blogs/authors/nicename, 这是不可取的,因为大多数作者将定制帖子类型,而不是博客。

我在这里查看了一些帖子,但没有正确答案:

How to properly prefix blog post URL's

Permalinks Question: Adding a prefix ONLY in front of the posts

Possible to change the URL for the regular post type without affecting the URL of other custom post types?

1 个回复
最合适的回答,由SO网友:Milo 整理而成

可以通过操纵$wp_rewrite 全球:

function wpa55976_author_base() {
    global $wp_rewrite;
    $wp_rewrite->author_base = \'authors\';
    $wp_rewrite->author_structure = \'/\' . $wp_rewrite->author_base . \'/%author%\';

    // EDIT - rewrite rule to force author urls to resolve:
    add_rewrite_rule(\'authors/([^/]+)/?$\', \'index.php?author_name=$matches[1]\', \'top\');

}
add_action( \'init\', \'wpa55976_author_base\' );
添加此内容后,请确保访问永久链接页面以刷新重写。

你不会得到的一件事是mysite.com/authors/ = authors archive, 由于WordPress默认情况下不提供此页面,尽管您可以创建authors 页面并使用自定义模板,或添加重写规则来处理它。

结束

相关推荐

Update page breaks permalinks

从3.3.1开始,我有一个奇怪的副作用。当更新页面(或创建新页面)时,我的所有永久链接都会中断-单击相关更新页面上的查看页面将导致404找不到。这不会发生在帖子中。我担心我的permalinks/%postname%/新模式可能会出现问题,但我将其替换为YEAR/postname,没有发现任何差异。我检查并发现帖子名称字段中有一些重复,我更改或删除了任何可疑的重复。仍然没有变化。这是我的htaccess-# BEGIN WordPress <IfModule mod_rewrite.c>