我无法将 magento 域重定向到 HTTPS 并添加 www


I can't redirect magento domain to HTTPS and add www

我正在尝试将magento从any.example重定向到https://www.example.com

访问代码:

<IfModule mod_rewrite.c>
############################################
## enable rewrites
    Options +FollowSymLinks
    RewriteEngine on
############################################
## you can put here your magento root folder
## path relative to web root
    #RewriteBase /magento/
############################################
## uncomment next line to enable light API calls processing
#    RewriteRule ^api/([a-z][0-9a-z_]+)/?$ api.php?type=$1 [QSA,L]
############################################
## rewrite API2 calls to api.php (by now it is REST only)
    RewriteRule ^api/rest api.php?type=rest [QSA,L]
############################################
## workaround for HTTP authorization
## in CGI environment
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    # // REDIRECT MY DOMAIN  HTTPS and add www //
    RewriteCond %{HTTP_HOST} !^(?!www'.)[^.]+'.example'.com$ [NC]
    RewriteCond %{HTTP_HOST} ^example'.com$ [NC,OR]
    RewriteCond %{HTTPS} off
    RewriteRule ^ https : //www.example.com%{REQUEST_URI} [R=301,L,NE]
############################################
## TRACE and TRACK HTTP methods disabled to prevent XSS attacks
    RewriteCond %{REQUEST_METHOD} ^TRAC[EK]
    RewriteRule .* - [L,R=405]
############################################
## redirect for mobile user agents
    #RewriteCond %{REQUEST_URI} !^/mobiledirectoryhere/.*$
    #RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC]
    #RewriteRule ^(.*)$ /mobiledirectoryhere/ [L,R=302]
############################################
## always send 404 on missing files in these folders
    RewriteCond %{REQUEST_URI} !^/(media|skin|js)/
############################################
## never rewrite for existing files, directories and links
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
############################################
## rewrite everything else to index.php
    RewriteRule .* index.php [L]

</IfModule>

以下重写规则应通过带有 301 重定向的 https 将所有非 https 请求转发到相应的页面。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC]

另请参阅以下链接

https://wiki.apache.org/httpd/RewriteHTTPToHTTPS

确保您的主题没有对 http 的引用

然后在您的 htAccess 文件中添加/替换它,

############################################
## enable rewrites
    Options +FollowSymLinks
    RewriteEngine on
############################################
## REDIRECT TO HTTPS ALWAYS
    RewriteCond %{SERVER_PORT} !443
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
如果我

正确理解了你的目标,那么似乎对你的第一个 Cond 模式的否定是不正确的(你的消极展望已经排除了 www)。试试这个:

RewriteCond %{HTTP_HOST} ^(?!www'.)[^.]+'.example'.com$ [NC]

我也会整理规则本身:

RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [R=301,L,NE]

更新所有更正:

RewriteCond %{HTTP_HOST} ^(?!www'.)[^.]+'.example'.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^example'.com$ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [R=301,L,NE]

这个解决方案效果很好...

RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]