https を使用してサイトにフォームを提供する必要があります。これがフォームの URL だとしましょう:
http://www.mysite.com/cms/visit/residents/form
リクエストはここに行く必要があります:
https://www.mysite.com/cms/visit/residents/form
私は共有ホスティングを使用しているので、これをルート ディレクトリの .htaccess ファイルに入れます。
RewriteCond %{HTTPS} !=on
RewriteRule ^(cms/visit/residents/form.*)$ https://www.mysite.com/$1 [R=301,L]
これは開発サーバー (Apache/Debian Squeeze) では正常に機能しますが、.htaccess ファイルをライブにすると、ルールが機能しません。.htaccess ファイルで既に動作している他の書き換えとリダイレクトがあるため、書き換えエンジンはオンで正常に動作しています。これらの他のルールは問題なく機能します。サイトをホストしている IT 担当者に尋ねたところ、ルールが機能しない理由がわかりません。上記のルールに数え切れないほどのバリエーションを試しましたが、ライブサーバーで動作するものはありません. 私が試した別の例を次に示します。
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^cms/visit/residents/form(.*) https://www.mysite.com/cms/visit/residents/form$1 [R=301,L]
開発サーバーのページからライブサーバーのhttps urlに書き換えられるので対象は問題ないと思います。私が考えることができるのは、ライブサーバー上のApache構成ファイルとのやり取りがあることだけです。これには次が含まれます。
<VirtualHost *:80>
ServerName www.mysite.com
RewriteEngine on
RewriteOptions inherit
RewriteCond %{HTTP_HOST} !=www.mysite.com
RewriteCond %{HTTP_HOST} !=""
RewriteRule (.*) $1 [R=permanent,L]
</VirtualHost>
<VirtualHost *:443>
ServerName www.mysite.com
RewriteEngine on
RewriteOptions inherit
RewriteCond %{HTTP_HOST} !=www.mysite.com
RewriteCond %{HTTP_HOST} !=""
RewriteRule (.*) $1 [R=permanent,L]
SSLEngine on
</VirtualHost>
誰かアイデアはありますか?テストごとにブラウザーのキャッシュをクリアし、.htaccess ファイルが正しくアップロードされていることを確認しています。
.htaccess ファイル:
AddDefaultCharset utf-8
AddType text/x-component .htc
AddType application/x-httpd-php .php .phtml
DirectoryIndex index.html index.php redirect.php index.htm
Options -Indexes +Includes +ExecCGI
ErrorDocument 404 /not-found.html
ErrorDocument 401 /access-error.html
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(cms/visit/residents/form.*)$ https://www.mysite.com/$1 [R=301,L]
# To tidy up urls of pages run by live Drupal install (under /cms)
RewriteRule (^research/events/patronage.*) cms/$1 [L]
RewriteRule (^intranet/facilities/meeting-rooms/supervision-room-booking) cms/$1 [L]
RewriteRule (^intranet/facilities/meeting-rooms/function-room-booking) cms/$1 [L]
RewriteRule (^study/five-question-feedback-form) cms/$1 [L]
RewriteRule (^intranet/students/graduates/ballot-form) cms/$1 [L]
RewriteRule (^intranet/students/graduates/summer-rooms) cms/$1 [L]
RewriteRule (^intranet/students/undergrads/accommodation/survey) cms/$1 [L]
RewriteRule (^intranet/students/grads/accommodation/survey) cms/$1 [L]
RewriteRule (^graduate-accommodation) cms/$1 [L]
RewriteRule (^undergraduate-accommodation) cms/$1 [L]
RewriteRule (^intranet/students/easter-vacation) cms/$1 [L]
RewriteRule (^students/grads/accommodation/ballot.html) cms/$1 [L]
RewriteRule (^students/undergrads/accommodation/ballot.html) cms/$1 [L]
RewriteRule (^intranet/students/advent-booking) cms/$1 [L]
RewriteRule (^intranet/students/christmas-vacation) cms/$1 [L]
RewriteRule (^intranet/students/undergrads/summer-vacation) cms/$1 [L]
RewriteRule (^six-question-survey) cms/$1 [L]
RewriteRule (^conference-dining/feedback) cms/$1 [L]
RewriteRule (^intranet/meat-free) cms/$1 [L]
RewriteRule (^conference-dining/enquiry-form) cms/$1 [L]
RewriteRule (^study/undergraduate/open-days/booking-form) cms/$1 [L]
RewriteRule (^study/undergraduate/open-days/arts-form) cms/$1 [L]
RewriteRule (^study/undergraduate/open-days/sciences-form) cms/$1 [L]
#RewriteRule (^intranet/college.*) cms/$1 [L]
# For the Cognitive Studies course 2012-13
Redirect permanent /cognitive http://mysite.com/intranet/students/cognitive-skills.html
(非常に多くの書き直しがあることはわかっていますが、これを 1 つのルールにまとめる必要があります!)