Ans*_*nsh 66 apache .htaccess https http
我正在尝试将https://www.example.com重定向到http://www.example.com.我在.htaccess文件中尝试了以下代码
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
此代码成功将https://example.com重定向到http://www.example.com.但是,当我输入https://www.example.com时,它会在浏览器中显示"网页不可用"错误.
我也尝试了以下2个代码但没有成功
尝试1
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*):NOSSL$ http://www.example.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
尝试2
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
Run Code Online (Sandbox Code Playgroud)
以上两种尝试均失败.有什么建议?
ark*_*cha 101
尝试2接近完美.只需稍微修改一下:
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)
小智 34
但是,如果您的网站没有安全证书,则它位于共享托管环境中,并且您不希望在通过https请求您的网站时收到"警告",您无法使用htaccess重定向它.原因是警告消息在请求甚至进入htaccess文件之前被触发,因此您必须在服务器上修复它.转到/etc/httpd/conf.d/ssl.conf并注释掉有关虚拟服务器443的部分.但可能性是您的托管服务提供商不会给您那么多控制权.因此,您必须移动到其他主机或购买SSL,以便在您的htaccess有机会重定向之前不会触发警告.
sta*_*een 10
您可以使用以下规则从https重定向到http:
RewriteEngine On
RewriteCond %{HTTPS} ^on$
RewriteRule ^(.*)$ http://example.com/$1 [NC,L,R]
Run Code Online (Sandbox Code Playgroud)
说明:
RewriteCond %{HTTPS} ^on$
Run Code Online (Sandbox Code Playgroud)
检查HTTPS是否已启用(使用https发出请求)
然后
RewriteRule ^(.*)$ http://example.com/$1 [NC,L,R]
Run Code Online (Sandbox Code Playgroud)
将任何请求(https://example.com/foo) 重定向到 http://example.com/foo.
$ 1是RewriteRule模式中的正则表达式的一部分,它包含在(.+)中捕获的任何值,在这种情况下,它捕获域名后的完整request_uri所有内容.
[NC,L,R]是标志,NC使uri情况敏感,您可以在请求中使用大写或小写字母.
如果currunt规则匹配,L标志告诉服务器停止处理其他规则,当你在块中有更多的规则时,使用L标志来避免规则冲突是很重要的.
R标志用于进行外部重定向.
小智 9
RewriteEngine On
RewriteCond %{SERVER_PORT} 443
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
227653 次 |
| 最近记录: |