如何编写RewriteRules并从HTTP重定向到HTTPS?

时间:2019-05-11 12:03:33

标签: .htaccess

我希望站点在https上运行,为此,我已将http写入https重定向规则,如下所示。但是其他先前的重定向已停止。

Options +FollowSymLinks -MultiViews

RewriteEngine On

#Rules for Versioned Static Files
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301]
RewriteRule ^(css|js)/(.+)\.(.+)\.(css|js)$ $1/$2.$4 [L]
RewriteRule ^validate/(.*)/(.*)$ validate.php?email=$1&code=$2 [L,QSA,NC]

当我在上面添加https重定向时,css,js和验证重定向不起作用。

1 个答案:

答案 0 :(得分:1)

This link可以帮助您更正表达式,然后根据需要编写RewriteRules。

我的猜测是,您可能想要编写类似于以下内容的内容:

(.*)(css|js)\/(.+)\.(css|js)

您可以缩小边界以查看其是否有效。例如,您可以在可能的情况下删除开始^和结束$字符,并仅使用相对路径。例如,您可以使用

<IfModule mod_rewrite.c>
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^domain\.com [NC]
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301]
</IfModule> 

而不是:

<IfModule mod_rewrite.c>
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^domain\.com [NC]
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301]
</IfModule> 

并检查。


CSS / JS

对于CSS / JS URL,您可以使用类似以下表达式来减小边界:

enter image description here

RegEx描述图

link可帮助您形象化表情:

enter image description here

RewriteRule测试

This link帮助您测试RewriteRules。

RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule (.*)(css|js)\/(.+)\.(css|js) https://yourdomain/$2/$3.$4 [R=301]
您可以添加到的

<IfModule mod_rewrite.c>
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^domain\.com [NC]
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301]
    RewriteRule (.*)(css|js)\/(.+)\.(css|js) https://yourdomain/$2/$3.$4 [R=301]
</IfModule> 

并继续为您希望的其他重定向编写。