我正在尝试将magento从any.example
重定向到https://www.example.com
htaccess代码:
<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>
答案 0 :(得分:0)
以下重写规则应通过带有301重定向的https将所有非https请求转发到相应的页面。
alanning:roles
另请参阅以下链接
答案 1 :(得分:0)
确保您的主题没有对http
的引用然后在你的htaccess文件中添加/替换它,
############################################
## enable rewrites
Options +FollowSymLinks
RewriteEngine on
############################################
## REDIRECT TO HTTPS ALWAYS
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
答案 2 :(得分:0)
如果我正确理解你的目标,那么你的第一个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]
答案 3 :(得分:0)
这个解决方案很有效......
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]