Как правильно заставить HTTPS на определенных страницах, используя Apache - PullRequest
2 голосов
/ 02 июня 2011

Я хотел бы заставить мою страницу регистрации на 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 и удалить .php из имен файлов в URL:

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 Ответ

1 голос
/ 03 июня 2011

Используйте ваше правило https следующим образом:

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

Помните, что в RewriteRule нет начального слеша /.

...