我对同一个网站有两个域,一个是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
任何帮助将不胜感激。
答案 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服务器进程读取。