htaccess重定向GET /?param = str到example.com/somewhere

时间:2017-01-04 21:42:32

标签: wordpress .htaccess redirect

我需要将WordPress页面重定向到某个地方。

http://example.com/?na=s

http://example.com/somewhere/

我试过了,但它没有用。

RewriteCond %{QUERY_STRING} !^na=s$
RewriteRule !^/$ http://example.com/somewhere/? [L,R=301]

完整档案

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{QUERY_STRING} !^na=s$
RewriteRule ^/$ http://example.com/somewhere/? [L,R=301]
</IfModule>

1 个答案:

答案 0 :(得分:1)

首先,您的“重定向”需要在现有WordPress重写之前进入文件的开头。 WP前端控制器捕获所有请求,因此您的重定向永远不会被处理。

RewriteCond %{QUERY_STRING} !^na=s$
RewriteRule ^/$ http://example.com/somewhere/? [L,R=301]

但是,您也在使用否定正则表达式(这是!前缀的作用),因此当查询字符串 {时它将匹配{1}}。

此外,在每个目录^na=s$文件中,目录前缀将从.htaccess 模式匹配的URL路径中删除,因此RewriteRule永远不会匹配。 (虽然“完整档案”上方的代码段中有^/$,但

在现有的重写之前尝试以下

!^/$

确保清除浏览器缓存,因为浏览器会严重缓存任何(错误的)301。 (通常更容易测试禁用缓存并使用302s,直到您确定它正常工作。)