环境 Centos与apache
尝试设置从http到https的自动重定向
From manage.mydomain.com --- To ---> https://manage.mydomain.com
Run Code Online (Sandbox Code Playgroud)
我已经尝试将以下内容添加到我的httpd.conf中,但它不起作用
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
请不要向我推荐超过173个upvotes 的长而非常详细的帖子.它对我不起作用.我还尝试了许多其他(1,2,3,4).他们都给我TOO_MANY_REDIRECTS或错误500.所以,这是我的问题:
使用我当前的.htaccess,会发生以下情况:
https://www.dukescasino.com/ - 完美地运作
https://dukescasino.com/ - 重定向到上面这是伟大的
下面两个选项加载正常,但它应该重定向到https版本:
这是当前的.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我不相信它是相关的,但如果是这样,这里是当前活动插件的列表:
编辑1 - 执行的测试:
测试A:
<IfModule mod_rewrite.c> …
Run Code Online (Sandbox Code Playgroud) 我不得不更新我的.htaccess:
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
对此:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
让它在AWS Elasic负载均衡器后面工作.
这一切似乎在AWS上运行良好,但在我的本地环境中,我陷入了重定向循环.
如何让这个设置在两种环境中正常工作?
我一直在寻找完美的301重定向.但我发现了很多解决方案而且不知道什么是最好的.
这就是我想要做的
最佳实践.htacess?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这是我的首选代码.至少现在是unil.
替代方式
我还发现了很多其他方法可以重定向HTTP
到HTTPS
.例如:
1.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Run Code Online (Sandbox Code Playgroud)
错过了一步?不,[R=301,L]
这里?
2.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
我应该用吗?
RewriteRule ^(.*)$
Run Code Online (Sandbox Code Playgroud)
代替
RewriteRule (.*)
Run Code Online (Sandbox Code Playgroud)
?
3.
RewriteCond %{HTTPS} off
RewriteCond …
Run Code Online (Sandbox Code Playgroud) 问候!
我正在尝试用.html替换.php扩展名
到目前为止我得到了:
RewriteRule ^(.*)\.html $1.php
Run Code Online (Sandbox Code Playgroud)
...当/site/page.html
输入url时它很好地工作(并且page.html
实际上不存在但是page.php
确实存在).
然而,我想要的/site/page.php
是进入时观众只能/site/page.html
在浏览器位置看到.
这是可行的还是我必须为每个页面设置显式重定向?:-(
提前致谢.
ps:我正在使用的开发环境是os x上的XAMPP,如果它有任何区别的话
我有一些问题与多个wordpress安装和.htaccess
重写规则,主要是为了强制https,但也删除www.来自任何领域.
examplewebsite.com
/home/hostingacc/public_html/
test.examplewebsite.com
/home/hostingacc/public_html/test/
moretests.examplewebsite.com
/home/hostingacc/public_html/moretests
我试过使用我在互联网上找到的几个重写规则,不确定哪个是最好用的,但下面是我用过的主要重写规则
RewriteEngine On
RewriteCond %{HTTP_HOST}#%{HTTPS}s ^www\.([^#]+)#(?:off|on(s)) [NC]
RewriteRule ^ http%2://%1%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)
我从https://github.com/h5bp/server-configs-apache/issues/48获得,但如前所述,其中一个可能更适合强制HTTPS和强行删除WWW
RewriteEngine On
RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_HOST} ^www.examplewebsite.com
RewriteRule ^(.*)$ https://examplewebsite.com/$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)
要么
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^examplewebsite\.com$ [NC]
RewriteRule ^ https://examplewebsite.com%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)
要么
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^www*\.(.*examplewebsite\.com)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)
要么
RewriteEngine …
Run Code Online (Sandbox Code Playgroud) 我创建了一个 Laravel 应用程序,我在本地使用 homestead 开发该应用程序,并在生产服务器上在线运行。
我只有 SSL 证书,www.mydomain.com
但没有mydomain.com
,这就是为什么我强制htaccess
重定向到https://www.*****
. 我通过更改文件来做到这一点,如/sf/answers/979824891/myproject/public/.htaccess
中所述
重定向在我的生产服务器上工作正常,但在我的本地环境 homestead 上没有发生重定向。为什么在我的本地环境中重定向被忽略?
这是完整的.htaccess
文件:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain …
Run Code Online (Sandbox Code Playgroud) 我的.htaccess和https重定向有问题。
首先,我已经参考这些链接找到了解决方案,但是没有一个可以帮助我。
链接列表:
当我使用http加载页面时,.htaccess将我重定向到https,但是当我使用https加载页面时,我遇到了无限循环。
这是我的.htaccess代码:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteCond %{HTTP_HOST} ^(api|www|dev|stefano|sav)\.
RewriteCond %{REQUEST_URI} !^/(api|www|dev|stefano|sav)/
RewriteCond %{DOCUMENT_ROOT}/%1 -d
RewriteRule ^(.*)$ %1/$1 [L]
Run Code Online (Sandbox Code Playgroud)
是否有人可以帮助我创建重定向条件(从HTTP到https)?