这个问题可能已经得到了回答,但我似乎找不到合适的解决方案。
我想301重定向所有页面,就像下面的页面一样
http://www.domain1.com/nl/dolor/sith
http://www.domain1.com/nl/loremipsum
http://www.domain1.com/nl
到一个新域,同时删除查询字符串,如下所示:
http://www.domain2.nl
所有其他页面,例如http://www.domain1.com/be/loremipsum应该仍然有效。只有后缀为nl
的才应该重定向。
请注意,这些不是真正的目录:在我的.htaccess文件中,我有以下语句来重写我的查询字符串:
# Personal Rewrites
RewriteRule ^([A-Za-z0-9-_]+)/?$ index.php?lid=$1 [L]
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ index.php?lid=$1&pl1=$2 [L]
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ index.php?lid=$1&pl1=$2&pl2=$3 [L]
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ index.php?lid=$1&pl1=$2&pl2=$3&pl3=$4 [L]
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ index.php?lid=$1&pl1=$2&pl2=$3&pl3=$4&pl4=$5 [L]
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ index.php?lid=$1&pl1=$2&pl2=$3&pl3=$4&pl4=$5&pl5=$6 [L]
我尝试过传统的重写,但这也会发送querystring:
Redirect 301 /nl http://www.domain2.nl
其他技术似乎不起作用。我不擅长正则表达式。。。
有人能提供或链接到合适的解决方案吗?提前感谢
将此规则添加为DOCUMENT_ROOT/.htaccess:中的第一条规则
RewriteRule ^nl(/.*|)$ http://www.domain2.nl/? [L,R=301,NC]
关于regex的另一个提示:
您应该将正则表达式更改为使用:[w-]
而不是[A-Za-z0-9-_]
,因为:
- 连字符应该是字符类中的第一个或最后一个字符,以避免转义
w
相当于[a-zA-Z0-9_]
您只需要在目标末尾添加一个?
。也可以使用mod_alias执行此操作:
Redirect 301 /nl http://www.domain2.nl?
但是,您会在浏览器的地址栏中看到一个零散的?
。
如果你不想要杂散的?
,你就必须坚持mod_rewrite:
RewriteRule ^nl/(.*)$ http://www.domain2.nl/$1? [L,R=301]
(您会希望在之前进行您已经进行的任何重写。