Linux 重写此.htaccess的更好方法

Linux 重写此.htaccess的更好方法,linux,apache,.htaccess,ssl,url-rewriting,Linux,Apache,.htaccess,Ssl,Url Rewriting,我想知道有没有更好的办法。它正在做以下工作: A) 将mydomain.uk路由到www.mydomain.uk B) 将任何非http路由到 我不经常使用基于linux的服务器,所以我确信有更好的方法来实现这一点。最终结果应该是任何基本url都应该在 这是密码 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteCond %{HTT

我想知道有没有更好的办法。它正在做以下工作:

A) 将mydomain.uk路由到www.mydomain.uk

B) 将任何非http路由到

我不经常使用基于linux的服务器,所以我确信有更好的方法来实现这一点。最终结果应该是任何基本url都应该在

这是密码

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteCond %{HTTP_HOST} ^mydomain.uk$
RewriteRule ^/?$ "https\:\/\/www\.mydomain\.uk\/" [R=301,L]

这两条规则可以很容易地合并为一条,如下所示:

RewriteEngine On

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.mydomain.uk%{REQUEST_URI} [L,R=301,NE]

您可以使用

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^mydomain.uk$
RewriteRule (.*) https://www.mydomain.uk%{REQUEST_URI} [R,L]

规则
RewriteCond%{HTTP_HOST}^mydomain.uk$
也可以更加严格,可以抓住任何不是
www.mydomain.uk
的主机。非常感谢您的回答,但对于我未经培训的linux用户来说,我想知道这两个不同的主机(ish)之间是否有任何区别答案是正确的,如果其中一个是更好的方法,这两个答案都是正确的@anubhava是一种“重定向所有不匹配的内容”的方法,而我的方法是“仅在匹配时重定向”。我通常建议使用他的方法,除非规则放置在可能使用不同主机名服务的虚拟主机中,您只关心将www重定向到www。这可能是一些共享主机服务的情况,这些服务将子域映射到主域内的文件夹中(例如CPanel)。谢谢@Simone Carletti我认为这两个都可以标记为答案,但我使用您的,我会选择那一个。非常感谢你的回答,但是对于我未经训练的linux眼睛来说,我想知道这两个不同的(ish)在什么方面有什么不同答案是正确的,如果有一个更好的方法。如果没有多个域名指向同一
DocumentRoot
,那么这个规则就不需要在规则中硬编码主机名两次。(如果需要,甚至可以消除这种单一的硬编码)。