使用htaccess将自定义URL重定向到根域

时间:2017-11-03 22:38:11

标签: wordpress apache .htaccess redirect

拥有一个wordpress网站,我有一个网址列表,我希望使用.htaccess文件重定向到根域。这里没什么好看的,只是在查找这些信息时,我发现了如何重定向所有网址或特定文件夹,而不是自定义网址列表。

例如,我的一个网址是这样的:example.com/path1/path2/,我可以轻松地在我的.htaccess文件的Redirect 301 /path1/path2/ http://example.com/行下添加RewriteEngine On

通过执行此操作,任何其他example.com/path1/path2/moreUrlPath/here将重定向到example.com/moreUrlPath/here并添加另一个自定义重定向行,如此{{1}不会有任何影响。

Bottomline,有一个网址列表,我如何永久地将它们重定向到根域?

1 个答案:

答案 0 :(得分:0)

使用mod_rewrite和RewriteRule代替Redirect

RewriteRule使用正则表达式来匹配URL,因此您可以说

RewriteRule ^path1/path2/$ http://example.com/ [R=301,L]

匹配完全匹配“/ path1 / path2 /”(在.htaccess中工作时总是在/下面,因此不包括前导/)。 ^代表“开始时匹配”,$表示“并在结尾处停止”,因此在path2 /之后不能有任何内容。这使您可以非常具体,例如你可以去

RewriteRule ^path1/path2/a$ http://example.com/ [R=301,L]
RewriteRule ^path1/path2/aa$ http://subdomain.example.com/ [R=301,L]

如果您不需要具体,并且想要在某个路径下重定向所有内容,则使用开放式匹配:

RewriteRule ^path1/path2/ http://example.com/ [R=301,L]

这会将/ path1 / path2 /下面的所有内容重定向到根目录,并且它不会关心path2 /之后的内容,因此/path1/path2/test/不会像Redirect那样重定向到http://example.com/test/ {1}}。 不过,您也可以使用反向引用并将某些部分与括号匹配,例如

RewriteRule ^path1/path2/(.*) http://example.com/$1 [R=301,L]

然后将/ path1 / path2 /重定向到http://example.com/,但/ path1 / path2 / test /重定向到http://example.com/test/