使用.htaccess的Wordpress自定义永久链接

时间:2016-01-16 07:42:44

标签: php wordpress .htaccess

目前,我通过管理员中的永久链接设置为帖子添加了自定义/post/%post_id%的自定义结构。

由于我需要重写类别,标签和作者页面的永久链接,如下所示:

分类

当前/post/category/category_name/category_name

代码

当前/post/tag/tag_nametag/tag_name

作者

当前/post/author/author_username/author/author_username

我试图在.htaccess中创建自定义RewriteRule,它根本不起作用:

RewriteRule ^/([^/]*)$ ./post/category/$1 [L]
RewriteRule ^/tag/([^/]*)$ ./post/tag/$1 [L]
RewriteRule ^/author/([^/]*)$ ./post/auhtor/$1 [L]

非常感谢.htaccess规则编码以实现此类永久链接的任何帮助。

4 个答案:

答案 0 :(得分:4)

  1. 确保在apache配置中启用了重写引擎
  2. 使用管理权限登录您的WordPress,然后转到设置 - >永久链接如附图三所示。 enter image description here
  3. 如果永久链接未更新,则表示您没有对网站根目录的写入权限,或者未启用apache的重写模块。
  4. 如果出现永久链接消息,则表示它还在WordPress网站的根目录中创建了.htaccess。
  5. 这样您就可以实现以下网址格式:

    分类

    category/category_name
    

    标签

    tag/tag_name
    

    作者

    /author/author_username
    
      

    注意:最好在url前加上类别,   / category前缀应该添加到路径中而不是直接添加到路径中   访问它,因为wordpress具有访问的页面和帖子   一般没有任何前缀直接。

答案 1 :(得分:1)

我没有使用WordPress测试,而是使用http://htaccess.mwl.be/

你非常接近:

RewriteRule ^([^/]+)$ /post/category/$1 [L]
RewriteRule ^tag/([^/]+)$ /post/tag/$1 [L]
RewriteRule ^author/([^/]+)$ /post/author/$1 [L]

答案 2 :(得分:0)

我没有使用WordPress测试,但使用http://htaccess.mwl.be/

Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^/([^/]*)$ ./post/category/$1 [L]
RewriteRule ^/tag/([^/]*)$ ./post/tag/$1 [L]
RewriteRule ^/author/([^/]*)$ ./post/auhtor/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

答案 3 :(得分:0)

如果你没有做一个非常高性能的项目,我强烈建议noch搞乱Wordpress标准.htaccess,而是使用Wordpress内部函数来完成相同的任务。尽管项目更清洁,但这也会使您的解决方案与Web服务器无关(谁知道您是否希望在未来切换到NGINX或其他东西)。

Wordpress主要功能应该对你有所帮助add_rewrite_rule。例如,您的类别链接可能如下所示:

  // place this rule inside function.php
  add_action("init", function() {
      add_rewrite_rule('^([^/]+)/?', 'index.php?category_name=$matches[1]', 'top');
  });

虽然你应该记住,正则表达式应该有其他“顶级”对象的例外。

来自wordpress docs的一个重要说明: 添加新规则后,您必须刷新规则表:从WordPress管理屏幕,选择设置 - >永久链接,只需点击保存更改,无需任何更改。

还有一个名为Rewrite的插件可用。由于它已经很长时间没有更新,我不会建议在生产中使用它,但它的代码可以作为灵感来源。