htaccess重写用户漂亮的URL来执行查询

时间:2011-12-15 19:08:39

标签: wordpress .htaccess url rewrite

假设我有一个网站mysite.com,这是一个wordpress网站。

我已经有以下重写规则来删除index.php:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

如果我去mysite.com/?blog_type=a-blog-type,我会得到一个只包含该类型博客的正确页面

我想要的是,用户能够输入mysite.com/blogs/a-blog-type/并进行实际查询,但继续显示/ blogs / a-blog-type /

我在这里看了很多类似的答案,但大多数似乎都是这样,它只是从查询重定向到我不想要的漂亮网址,因为漂亮的网址只会导致404错误,因为它没有进行查询。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

此重写规则将使用任何mysite.com/blogs/a-blog-type/网址并将其重写为mysite.com/?blog_type=a-blog-type。因此,mysite.com/blogs/a-blog-type/会显示给用户,但会加载mysite.com/?blog_type=a-blog-type

RewriteRule ^blogs/([^/]*)((/)?)$ ?blog_type=$1 [nc,l]

编辑:以下是配置现在的样子:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^blogs/([^/]*)((/)?)$ ?blog_type=$1 [nc,l]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>