在URL中重写GET变量

时间:2011-07-13 00:35:44

标签: .htaccess mod-rewrite url-rewriting rewrite

我正在使用WordPress的固定链接结构%category%/%postname%/以及以下htaccess:

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

网址采用http://www.example.com/category/postname/格式。我有一个插件,如果您将?m=gallery附加到网址,它会将您带到帖子的图库。所以http://www.example.com/category/postname/?m=gallery将您带到画廊。我希望能够使用http://www.example.com/category/postname/gallery/代替。我需要在htaccss中修改什么来达到我想要的效果?我想这会是这样的RewriteRule ^(.+)/gallery$ $1?m=gallery

编辑 - 当前的htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^(.+)/gallery/$ $1/?m=gallery [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

1 个答案:

答案 0 :(得分:1)

考虑到您提供的网址示例(http://www.example.com/category/postname/gallery/ =&gt; http://www.example.com/category/postname/?m=gallery),您需要这样的一行:

RewriteRule ^(.+)/gallery/$ $1/?m=gallery [QSA]
  1. 添加了缺失的斜杠/

  2. 添加了[QSA]标志(实际上可能不是必需的)。

  3. 您需要将此规则置于顶部:在此行之后,例如:RewriteRule ^index\.php$ - [L]

    显然,您确保WordPress会生成此类网址:http://www.example.com/category/postname/gallery/