【问题标题】:To use 'QUERY_STRING' or 'REQUEST_URI'使用“QUERY_STRING”或“REQUEST_URI”
【发布时间】:2014-04-22 14:54:37
【问题描述】:

我研究了高低,但还没有找到我想要的。

我有以下重写规则:

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. 检查传入 URL 中的值“shop”
  2. 如果找到值“shop”,则运行重写器

现在,它没有运行,因为条件没有得到满足。 当我把 RewriteCond 拿走时,它会正确地从 URL 中删除“商店”,然后进入无限循环。

我尝试过使用 REQUEST_URI 和 QUERY_STRING 变量,但似乎都不起作用。

我目前在商店中使用 WooCommerce

完整的产品网址:

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

任何帮助表示赞赏。

【问题讨论】:

  • 什么是完整的商店 URL,您希望它重定向到哪里?
  • 你想让/shop/category/product/重定向到/category/product/吗?
  • 当您收到 404 时,浏览器中会显示什么 URL?
  • 对不起,我删除了我的回复。将在下面的块中回复。

标签: regex .htaccess


【解决方案1】:

试试这些规则:

# 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

【讨论】:

  • 好的,我尝试了上面的规则,它仍然进入重定向循环。 :(
  • 我第一次进入产品页面时,它进入了 404 页面。但是该商店已从 URL 中删除。
  • 您不想将/shop/category/product/ 重定向到/category/product/ 吗?在浏览器中测试这个
  • RewriteRule 正在工作,但仍会进入重定向循环。
  • 这些规则不会造成循环。但是,如果您的 WP 代码/插件在 URL 中强制使用 /shop,那么它将循环。
猜你喜欢
  • 1970-01-01
  • 2013-02-13
  • 1970-01-01
  • 2015-04-02
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多