我有一个.htaccess
文件,其中包含一些正在执行某些操作的重写,这些工作正常。它看起来像这样:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
# Removes .php ending from path
# ---------------
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]
# Services & Knowledgebase rewrites
# ---------------
RewriteRule ^services/([a-zA-Z0-9-/]+)/([a-zA-Z0-9-/]+)$ /services.php?cat=$1&s=$2 [L]
RewriteRule ^services/([a-zA-Z0-9-/]+)$ /services.php?service=$1 [L]
RewriteRule ^knowledge-base/([a-zA-Z0-9-/]+)/([a-zA-Z0-9-/]+)$ /knowledge-base.php?cat=$1&s=$2 [L]
RewriteRule ^knowledge-base/([a-zA-Z0-9-/]+)$ /knowledge-base.php?cat=$1 [L]
</IfModule>
我现在已经向网站添加了SSL,并且需要为整个网站强制使用HTTPS。我尝试将以下内容添加到.htaccess
:
# Force HTTPS
# ---------------
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
在RewriteEngine On
语句之后,当我尝试example.com
时,网址仍为example.com
,我得到以下信息:
未找到
在此服务器上找不到请求的网址。
如果我去https://example.com
,那就完美了。
如何正确强制https,同时保留其他重写规则?
感谢您的帮助
麦克
答案 0 :(得分:1)
以下是我通常使用的内容:
RewriteCond %{HTTPS} !=on
RewriteCond %{ENV:HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
从未遇到任何问题。