Wordpress和mod-rewrite URL到类别页面

时间:2013-01-16 20:33:44

标签: wordpress .htaccess mod-rewrite

目标 - 显示网址短版本的正确页面

Htaccess文件:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^wholesale/?$ /products-page/wholesale/$1 [NC] # Handle requests for "wholesale"
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

但是当我转到http://www.utatz.com/wholesale时,它不会加载http://www.utatz.com/products-page/wholesale/

的内容

我有什么不正确的做法?

由于

1 个答案:

答案 0 :(得分:1)

让我直截了当地说:

选项1)
您想输入以下URL:
yoursite /批发/
并且能够看到与您所处的完全相同:
yoursite /产品页/批发/

实现这一目标的最简单方法是添加一个页面"批发"并使用修改后的循环创建自定义模板页面。

http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates
http://codex.wordpress.org/Function_Reference/query_posts

OR

选项2)
你想输入:
yoursite /批发/一个产品/
并且能够看到相当于:
yoursite /产品页/批发/一个产品/

如果这是您想要实现的目标,您应该专注于添加/修改WordPress'拥有RewriteRules,你应该避免使用.htaccess,因为你可以指示WP理解任何给定的永久链接结构。

作为简介,我建议您查看http://www.hongkiat.com/blog/wordpress-url-rewrite/

不要忘记:每次更改固定链接结构时,请转到Settings -> Permalinks并单击“保存更改”,否则更改可能不适用,直到您这样做。 / p>

我不确定这是否可以使用.htaccess,但WordPress中的规则看起来就像下面示例的第一个RewriteRule中显示的那样:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^wholesale/(.+)/?$ /index.php?category_name=wholesale&name=$1 [NC] # (.+) represents the title of a post with the "wholesale" category
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

当您使用add_rewrite_rule时,应该看起来有点像:

add_rewrite_rule('^wholesale/([^/]*)/?','index.php?category_name=wholesale&name=matches[1]','top');

上述示例仅在(.+) / ([^/]*)代表帖子时才有效,如果它是自定义帖子类型则不起作用,因为您必须添加代表此类自定义的变量发布类型。