使用www和非www的HTACCESS重定向子域到主域上的特定页面

时间:2019-06-18 15:57:23

标签: .htaccess redirect

我知道关于此的文章很多,但是我为HTACCESS重定向有多少变化而苦苦挣扎,而我在这里尝试的所有变化都没有达到我的期望,所以也许你可以帮我!

目标

www.shop.midwestsi.com

shop.midwestsi.com

重定向到:

www.midwestsi.com/supplies / (商店页面)

当前,(非www)重定向,但(www)没有重定向,并转到找不到页面错误。

这是我的HTACCESS文件中的内容/我尝试的无效内容。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^https://www\.shop\.midwestsi\.com
RewriteRule ^(.*)$ https://www\.midwestsi\.com/supplies/$1 [L]

我还尝试了将该IP下的所有内容重定向到主域(因为加载主页要比错误页面更好),但这也没有效果。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^160\.153\.43\.65
RewriteRule (.*) https://www.midwestsi.com/$1 [R=301,L]

也尝试过此方法,但我仍然没有任何改变:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^shop\.midwestsi\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.shop\.midwestsi\.com$
RewriteRule ^en\/home\/?(.*)$ "https\:\/\/www\.midwestsi\.com\/$1" [R=301,L]

如果您能在这里看到我做错的事情,谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这可能就是您要寻找的:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?shop\.midwestsi\.com$
RewriteRule ^/?(.*)$ "https://www.midwestsi.com/supplies/$1" [R=301,QSA]

一个好主意是从302临时重定向开始,然后在确定一切正确设置之后,才将其更改为301永久重定向。这样可以防止在尝试时缓存问题...

此规则将同样在HTTP服务器主机配置或动态配置文件内(“htaccess的”文件)工作。显然,重写模块需要加载到http服务器内部并在http主机中启用。如果使用动态配置文件,则需要注意在主机配置中完全启用了它的解释,并且该解释位于主机的DOCUMENT_ROOT文件夹中。

还有一个一般性说明:您应该始终喜欢将此类规则放置在http服务器主机配置中,而不要使用动态配置文件(“ .htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为,难以调试的原因,并且确实降低了http服务器的速度。仅当您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供商)或坚持编写自己的规则的应用程序(这显然是安全的噩梦)时,才提供它们作为最后的选择。