拥有一个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,有一个网址列表,我如何永久地将它们重定向到根域?
答案 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/。