如何使用Apache在特定页面上正确强制HTTPS

时间:2011-06-02 17:27:30

标签: apache .htaccess redirect https rewrite

我想强制我的注册页面为https,并允许使用https或http浏览所有其他页面(例如,http://www.example.com/signup应重定向到https://www.example.com/signup)。我能够将所有页面强制为https,但不能只有一个页面重定向到https。页面正常加载为http。

这是我在htaccess文件中尝试使用的代码:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^/signup(/.*)$ https://www.example.com/$1 [R=301,L]

为了它的价值(如果我不知道有冲突),我也使用以下代码强制所有页面重定向到www并从URL中的文件名中删除.php:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^([a-z.]+)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .? http://www.%1example.com%{REQUEST_URI} [R=301,L]

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php?/$1

对我做错了什么的想法?

1 个答案:

答案 0 :(得分:1)

让你的https规则如下:

RewriteCond %{SERVER_PORT} =80
RewriteRule ^(signup/?)$ https://www.example.com/$1 [R=301,L,NC]

请记住,RewriteRule中没有起始斜杠/