htaccess将http或https从domain.com重定向到https domain.net

时间:2019-01-30 11:46:59

标签: apache .htaccess ssl redirect url-rewriting

我对同一个网站有两个域,一个是ssl的.com,另一个是没有ssl的.net
我们只想使用.com扩展名,并使用htaccess文件将用户从旧域重定向到新域(我尝试使用此代码):

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.[^.]+\.[^.]+$
RewriteRule ^(.*) http://www\.%{HTTP_HOST}/$1       [QSA,L,R=301]

Rewritecond %{REMOTE_HOST}  \.exemple\.(net) [nc]
Rewriterule ^(.*)$ https://www.exemple.com [r=301,nc]

RewriteRule ^([^\.]+)$ $1.php [NC,L]

ErrorDocument 404 https://www.exemple.com/404

那显然是行不通的!

exemple.net  ------>   https://www.exemple.com/404 

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这里是经过修改的版本,可以解决您的建议中的一些问题。

主要变化是,您需要在第二个重写规则中重复使用大写字母$1

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteRule ^/?(.*)$ https://www.example.com/$1 [QSA,R=301]

Rewritecond %{HTTP_HOST}  \.example\.net$
Rewriterule ^/?(.*)$ https://www.example.com/$1 [QSA,R=301]

RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI}.php -f
RewriteRule ^/?([^\.]+)$ $1.php [NC,L]

ErrorDocument 404 https://www.example.com/404

请注意,我自己并未对此进行测试,我只是通过查看了一些修补程序。

该规则集将在http服务器的主机配置或动态配置文件(“ .htaccess”)中同样起作用。您绝对应该首选第一种选择,除非您无权访问该配置(请参阅:廉价的托管服务提供商)。

很显然,需要加载并启用重写模块,如果您决定使用动态配置文件,请注意该文件位于主机的DOCUMENT_ROOT文件夹中,并且可由http服务器进程读取。