如何通过htaccess重定向root和仅root?


53

我只想将我的根目录重定向到另一个URL,但要保留它们所属的所有/ sub /目录(并重定向)

例:

mysite.com/1重定向到mysite.com/admin打开页面

我希望mysite.com/重定向到mysecondsite.com,并且仅使用htaccess进行301重定向

Answers:


74

尝试这个:

RewriteEngine on
RewriteCond %{HTTP_HOST} mysite\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
Rewriterule ^(.*)$ http://mysecondsite.com/ [L,R=301]

如果您不需要检查旧域(例如,如果.htaccess所在的目录仅由旧域使用),则可以删除第二行。


1
就我而言,我需要将流量重定向到mysite.com/,而不是foo.mysite.com,因此必须在第2行添加一个正则表达式,RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]以确保匹配的是确切的主机
jaygooby 2014年

这是更有效的检查中的URL路径RewriteRule 模式(如@ DaveForgac的答案),而不是使用附加条件来检查REQUEST_URI服务器变量。
怀特先生'18

38

如果您只是想将“ /”重定向到另一个域,则可以使用:

RewriteEngine on
RewriteRule ^$ http://www.example.com/ [R=301,L]

这只会将域名的根与之匹配,因此它只会重定向没有指定文件名的域名。


轻微的变化对我有用。添加到我的htaccess的底部,在调用所有其他规则之后,我只想向访问我的根域(没有任何子域)的任何人呈现一个欢迎页面:RewriteCond%{HTTP_HOST}!^(subdomain1 | subdomain2)\。mysite \ .com $ [NC] RewriteRule ^ $ /welcome.php [NC,L]
MarsAndBack

15

这应该可以正常工作:

RedirectMatch 301 ^/$ https://example.com/

2
如果您尚未将mod_rewrite用于其他重定向,则(相对于现有答案)将是更可取的。
MrWhite

-3

较短的解决方案:

Redirect 301 / http://mysecondsite.com/

12
这不会满足jardel的要求。它将重定向所有页面而不是仅重定向根。
sharoz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.