要使用'QUERY_STRING'或'REQUEST_URI'

时间:2014-04-22 14:54:38

标签: regex .htaccess

我研究过高低,但还没找到我要找的东西。

我有以下重写规则:

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^shop$
RewriteRule ^shop/(.+)$ http://www.domain.com/$1 [NC,L,R=301]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

我想要发生的是以下内容:

  1. 检查传入的网址值'shop'
  2. 如果找到值'shop',请运行rewriterule
  3. 现在,它没有被运行,因为条件没有得到满足。 当我拿走RewriteCond时,它正确地从URL中删除“商店”,然后进入无限循环。

    我尝试过使用REQUEST_URI和QUERY_STRING变量,但似乎都没有。

    我目前正在为商店使用WooCommerce

    完整产品网址:

    http://www.domain.com/shop/category/product/
    

    任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

请尝试以下规则:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^shop/(.+)$ /$1 [NC,L,R=301]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPres