我希望站点在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和验证重定向不起作用。
答案 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 URL,您可以使用类似以下表达式来减小边界:
此link可帮助您形象化表情:
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>
并继续为您希望的其他重定向编写。