我目前已经改写在example.com工作,整个网站是HTTPS,使用这个:
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
我需要很多文件在这个完全相同的网站上,可以通过第二个域名访问,并通过HTTP,例如: http://example.net/files/....
我尝试添加example.net作为ServerAlias但当然这只是redirect,然后重写到https://example.net/files
我从互联网复制了重写规则,并且不确定修改它的正确方法。
我正在按照改写重写规则的思路来思考:
RewriteRule ^example.com/?(.*) https://example.com/$1 [R,L]
所以只有在包含example.com URL才会被重写。那么我是否需要为TLD域自身重写规则,而不是通配符条目?
请有人可以帮助正确的方式来实现这一点,以便对ServerAlias ( example.net )的请求不被重写?
如果您想要将两个域指向相同的内容。 例如。 example.com和example.net 。 然后为每个域创build单独的虚拟主机,但将它们指向相同的文档根目录 。 为HTTP( http://example.com )添加一个具有80的VirtualHost条目,并使用HTTPS( https://example.net )添加具有443的另一个域条目并分配要求的SSL条目。
正如Sunil所build议的那样,您可以创build单独的虚拟主机,然后SSLredirect仅发生在第一个虚拟主机(即example.com端口80)中。 (你也可以避免使用mod_rewrite,只使用一个mod_alias Redirect ,这将是可取的。)
但是,你也可以做你正在build议的,并创build一个ServerAlias example.net (你的其他域),并包括一个条件 (即REwriteCond指令)在当前的redirect,只redirectexample.com域。 例如:
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^(www\.)?example\.com [NC] RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
请注意,这应该是一个301(永久)redirect,一旦你确认它工作正常。 即。 [R=301,L] 。