在大约一周内,我们必须使用新域名的网站。但我们并不希望每个人都能获得404,所以我们希望重定向所有人。
我们的问题如下:
旧链接:http://www.example.com/one/detail?id=12345-54321-21345-32145-43215
新链接:http://www.newpage.com/one/12345-54321-21345-32145-43215/
所以我们想要的只是' 12345-54321-21345-32145-43215',没有'详细信息?='
我们已经尝试了很多东西,但出于某种原因,我们不能失去这些细节?='
我一直在本地尝试,
newpage有以下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>
示例页面已经多次改变,试图弄清楚发布它会没用的东西..
编辑:现场的两个网站都是wordpress网站 EDIT2:详细信息?=更改为详细信息?id =因为我说错了。答案适用于以前的问题。我尝试将其更改为
RewriteCond %{QUERY_STRING} ^(?:id)?=([0-9-]+)$
RewriteRule ^one/detail/id$ http://newdomain.com/one/%1/? [NC,L,R=301]
但这并不奏效。我怎样才能解决这个问题? (或者我应该为此创建一个新问题?)
答案 0 :(得分:2)
在你的htaccess中,添加:
RewriteCond %{QUERY_STRING} ^(?:detail)?=([0-9-]+)$
RewriteRule ^one/detail$ http://newdomain.com/one/%1/? [NC,L,R=301]
这会将/one/detail?=12345-54321-21345-32145-43215
重定向到/one/12345-54321-21345-32145-43215/
并HTTP 301 code
(永久移动)。
更新:要重定向default?id=
而不是default?=
,您只需在表达式中包含id
:
RewriteCond %{QUERY_STRING} ^(?:detail)?id=([0-9-]+)$
RewriteRule ^one/detail$ http://newdomain.com/one/%1/? [NC,L,R=301]
这会将/one/detail?id=12345-54321-21345-32145-43215
重定向到/one/12345-54321-21345-32145-43215/
并HTTP 301 code
(永久移动)。