我需要将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>
答案 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,直到您确定它正常工作。)