Php 强制HTTPS以及URL重写?

Php 强制HTTPS以及URL重写?,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我将此规则作为.htaccess文件的一部分: RewriteRule ^view-([0-9]+)$ view.php?id=$1 [L] 这对我来说很好,除了现在我想添加以下功能-我想为整个目录实现HTTPS(这个.htaccess在一个名为/information/的目录中),除了这一条规则-任何与视图匹配的东西-([0-9]+)。这就是我得到的: RewriteCond %{HTTPS} on RewriteCond %{REQUEST_URI} ^/information/view-

我将此规则作为
.htaccess
文件的一部分:

RewriteRule ^view-([0-9]+)$ view.php?id=$1 [L]
这对我来说很好,除了现在我想添加以下功能-我想为整个目录实现HTTPS(这个
.htaccess
在一个名为
/information/
的目录中),除了这一条规则-任何与
视图匹配的东西-([0-9]+)
。这就是我得到的:

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/information/view-[0-9]+
RewriteRule ^(.*)$ http://www.example.com/information/$1 [R]

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/information/view-[0-9]+
RewriteRule ^(.*)$ https://www.example.com/information/$1 [R]
这对我来说基本上工作正常,除了现在我尝试访问
http://www.example.com/information/view-101
,它将我重定向到
https://www.example.com/information/view.php?id=101
。如果我尝试访问
https://www.example.com/information/view-101
,它还会将我重定向到相同的URL

我把这六行放在URL重写代码的顶部。所有其他URL工作正常-例如,
http://www.example.com/information/about
将带我去
https://www.example.com/information/about
,这是正确的功能-仅仅一个URL似乎就可以将我带到最基本的URL表单-
view.php?id=101
,忽略所有URL重写


有什么办法可以解决这个问题吗?

从顶部删除这6行,然后像这样编写规则。在
.htaccess
文件顶部添加以下行应在域的所有URL上强制执行
HTTPS
。它还会将您域的
非www
版本重定向到
www
版本:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^yourdomain\.com$ [OR]
RewriteCond %{HTTPS} off
RewriteRule ^ https://www.yourdomain.com%{REQUEST_URI} [R=301,L]

从顶部删除这6行,然后像这样编写规则。在
.htaccess
文件顶部添加以下行应在域的所有URL上强制执行
HTTPS
。它还会将您域的
非www
版本重定向到
www
版本:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^yourdomain\.com$ [OR]
RewriteCond %{HTTPS} off
RewriteRule ^ https://www.yourdomain.com%{REQUEST_URI} [R=301,L]
这是可行的,但我不明白为什么apache使用代码301将外部重定向到view.php


这是可行的,但我不明白为什么apache使用代码301将外部重定向到view.php。

我需要对
view-[0-9]+
URL使用HTTP-有什么方法可以实现吗?我需要对
view-[0-9]+
URL使用HTTP-有什么方法可以实现吗?是的,这也是我想知道的。在我的代码中,它重定向到
view.php
文件,我不知道为什么。是的,这也是我想知道的。在我的代码中,它重定向到
view.php
文件,我不知道为什么。