强制https://通过htaccess

时间:2015-04-09 05:50:46

标签: apache .htaccess http redirect https

我对编码很新,所以请原谅我对这个主题的无知。我知道他们有几个类似的问题,但似乎没有一个对我有用。我们随时欢迎您提供有用的信息,因为您最好向我解释一切,即使它似乎有点过分,因为我在这些特定科目中没有受过良好教育。

这是我的整个htaccess文件,位于我的根论坛目录中。



RewriteOptions inherit

RewriteEngine on

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /forums/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(jpeg|jpg|gif|png)$ /forums/public/404.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /forums/index.php [L]
</IfModule>

<Files 403.shtml>
order allow,deny
allow from all
</Files>

RewriteCond %{HTTP_HOST} ^perspectiverp\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.perspectiverp\.com$
RewriteRule ^home$ "https\:\/\/www\.perspectiverp\.com\/forums\/" [R=301,L]

RewriteCond %{HTTP_HOST} ^perspectiverp\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.perspectiverp\.com$
RewriteRule ^Home$ "https\:\/\/www\.perspectiverp\.com\/forums\/" [R=301,L]

RewriteCond %{HTTP_HOST} ^perspectiverp\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.perspectiverp\.com$
RewriteRule ^/?$ "https\:\/\/www\.perspectiverp\.com\/forums\/" [R=301,L]
&#13;
&#13;
&#13;

我的网站将始终通过https://连接到该网站,除非直接告知其他方式,例如: http://perspectiverp.com/forums/。我的问题是,由于我的一般连接是通过https://用户仍然可以通过http://连接,这是一个主要的安全漏洞。我基本上需要它类似于谷歌让他们的系统自动将http://重定向到https://,即使用户试图在网址中更改它

e.g。 http:/ww.google.com/会被重定向到https:/ww.google.com/?gws_rd = ssl,如果用户尝试将其更改为* http:/ww.google.com /.

至于想知道论坛软件是什么的人,我目前正在使用许可版本的Invision Powers社区套装。

//更新 首次尝试结果是&#34;网页具有重定向循环&#34;

RewriteOptions inherit

RewriteEngine on

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /forums/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(jpeg|jpg|gif|png)$ /forums/public/404.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /forums/index.php [L]
</IfModule>

<Files 403.shtml>
order allow,deny
allow from all
</Files>

RewriteCond %{HTTPS} =off
RewriteRule ^ https://www.perspectiverp.com%{REQUEST_URI} [R,L]

RewriteCond %{HTTP_HOST} ^(www\.)?perspectiverp\.com$ [NC]
RewriteRule ^(home)?$ https://www.perspectiverp.com/forums/ [R=301,NC,L]

第二次尝试结果是&#34;网页有重定向循环&#34;

RewriteOptions inherit

RewriteEngine on

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /forums/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(jpeg|jpg|gif|png)$ /forums/public/404.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /forums/index.php [L]
</IfModule>

<Files 403.shtml>
order allow,deny
allow from all
</Files>

RewriteCond %{HTTPS} =off
RewriteRule ^ https://www.perspectiverp.com%{REQUEST_URI} [R,L]

RewriteCond %{HTTP_HOST} ^(www\.)?perspectiverp\.com$ [NC]
RewriteRule ^home$ https://www.perspectiverp.com/forums/ [R=301,NC,L

第三次尝试结果是&#34;网页有重定向循环&#34;

RewriteOptions inherit

RewriteEngine on

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /forums/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(jpeg|jpg|gif|png)$ /forums/public/404.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /forums/index.php [L]
</IfModule>

<Files 403.shtml>
order allow,deny
allow from all
</Files>

RewriteCond %{HTTPS} =off
RewriteRule ^ https://www.perspectiverp.com%{REQUEST_URI} [R,L]

RewriteCond %{HTTP_HOST} ^perspectiverp\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.perspectiverp\.com$
RewriteRule ^home$ "https\:\/\/www\.perspectiverp\.com\/forums\/" [R=301,L]

RewriteCond %{HTTP_HOST} ^perspectiverp\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.perspectiverp\.com$
RewriteRule ^Home$ "https\:\/\/www\.perspectiverp\.com\/forums\/" [R=301,L]

RewriteCond %{HTTP_HOST} ^perspectiverp\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.perspectiverp\.com$

2 个答案:

答案 0 :(得分:0)

在最后三个https://重写规则之前添加以下内容。

RewriteCond %{HTTPS} =off
RewriteRule ^ https://www.perspectiverp.com%{REQUEST_URI} [R,L]

一切按预期工作后,将R更改为R=301以上。另外,请注意我的重写规则中的URL如何引用并转义任何正斜杠,因为它不是必需的。

你也可以用这一个替换你的最后三个规则:

RewriteCond %{HTTP_HOST} ^(www\.)?perspectiverp\.com$ [NC]
RewriteRule ^(home)?$ https://www.perspectiverp.com/forums/ [R=301,NC,L]

NC标记使规则不区分大小写,因此homeHome都匹配。 ?使前一组()成为可选项;因此,RewriteCond适用于www和没有RewriteRule/也适用于{{1}}。

答案 1 :(得分:0)

我通过反向代理服务器(Cloudflare)强制https://并且能够强制我的网站接受https://仅限流量。