我有几个域在一个.htaccess文件下运行,每个域都通过SSL保护.我需要在每个域上强制使用https,同时还要确保www重定向到非www.这是我正在使用的不起作用:
RewriteCond %{HTTP_HOST} ^www.%{HTTP_HOST}
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
例:
RewriteCond %{HTTP_HOST} ^www.%{HTTP_HOST}
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
应该重定向到......
RewriteCond %{HTTP_HOST} ^www.%{HTTP_HOST}
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我正试图强迫用户被重定向到非www网站,并强制https.
我输入了哪种功能,但在输入http时不强制使用https.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://site.com\.net/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
关于我做错了什么的任何想法?
这本质上与htaccess force https 并将 www 重定向到非 www,但没有其他子域(即,我想配置 Apache 以将所有非 HTTPS和/或“www” URL重定向到 HTTPS 非 www URL 的问题相同) ,但我想通过虚拟主机而不是.htaccess文件来配置 Apache (因为我读到了避免.htaccess有一些好处)。
使用.htaccess文件时,我能够得到以下答案:https : //stackoverflow.com/a/34333450/1468130但是当我尝试将该答案的配置传输到我的虚拟主机配置时它不起作用;“ https://www.domain.com ” 从未重定向到“ https://domain.com ” ”。
我阅读了.htaccess虚拟主机.conf文件和虚拟主机文件之间的差异,并找到了这个http://tltech.com/info/rewriterule-in-htaccess-vs-httpd-conf/和这个:https : //www.digitalocean.com/ community/questions/can-you-use-virtual-host-config-conf-to-redirect-www-domain-to-non-www?answer=15129这似乎暗示我可以将配置包装在一个<Directory>块中它会工作。不幸的是,它没有(“ https://www.domain.com ”仍然从未重定向到“ https://domain.com ”),所以我想知道互联网是否知道我做错了什么:
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
ServerAdmin admin@domain.com
DocumentRoot /var/www/domain.com/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/domain.com/>
RewriteEngine On
# match any …Run Code Online (Sandbox Code Playgroud) 我试图强制 https 并将非 www 重定向到 www:
问题是我有很多 sudomains 并且我没有通配符 ssl(目前)所以我想要:
那可能吗 ?
我发现和测试的所有答案都只强制 https 或将所有非 www 重定向到 www 我的问题是我不希望子域获得 https 除了 www 并将非 www 重定向到 www