mod_rewrite .htaccess HTTPS - PullRequest
       17

mod_rewrite .htaccess HTTPS

0 голосов
/ 29 июля 2011

Я хотел бы заставить браузер перенаправлять на HTTPS всегда, если кто-то набирает:

http://www.mydomain.com/user
or
http://www.mydomain.com/user/

Обе из вышеуказанных 2 ссылок должны перенаправить на: https://www.mydomain.com/user

Прямо сейчасвторая-нижняя строка кода работает правильно:

RewriteRule ^user$ https://www.mydomain.com/user/ [R,QSA]

действительно перенаправит браузер на HTTPS, но если введен http://www.mydomain.com/user/, он не будет перенаправлен на HTTPS.Как мне этого добиться?

Options +FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^mydomain.com [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]

RewriteRule ^user$ https://www.mydomain.com/user/ [R,QSA]
RewriteRule ^user/$ public/index.php?var1=x&var2=y [L,QSA]

Ответы [ 2 ]

2 голосов
/ 29 июля 2011

Используйте эти правила:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /

# force www domain name
RewriteCond %{HTTP_HOST} ^mydomain.com [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]

# force HTTPS for some pages
RewriteCond %{HTTPS} =off [NC]
RewriteRule ^user/?$ https://www.mydomain.com/user/ [R=301,L]

RewriteRule ^user/$ public/index.php?var1=x&var2=y [L,QSA]

Он будет перенаправлен на HTTPS:

  • , если HTTP является текущим протоколом (поэтому перенаправление отсутствует, если уже используется HTTPS)
  • независимо от наличия косой черты: и /user, и /user/ выполнят работу (но ничего не сделают, если будет запрошен /user/something-here).
0 голосов
/ 29 июля 2011

Как насчет этого ...

RewriteRule ^user/(.+)/?$  public/index.php?var1=x&var2=y [L,R=301]
RewriteRule ^user/?$       https://www.mydomain.com/user/ [L,QSA]
RewriteRule ^(.*)/?$       http://www.mydomain.com/$1 [L,R=301]
...