2016-09-20 46 views
0

私たちのサーバー上でwwwとhttpsにリダイレクトするようにApacheを設定しようとしていますが、cgi-binフォルダにあるvlinkスクリプトを使用するecomパッケージを使用します。 /に/のcgi-binに/スクリプト名を書き換えるApacheをcgi-binでwwwとhttpsにリダイレクトする

命令は、次のとおりです。 -

RewriteEngine on 

RewriteRule  ^$  /cgi-bin/scriptname/ [L,NS,PT] 
RewriteRule  ^/$  /cgi-bin/scriptname/ [L,NS,PT] 
RewriteRule  ^/index\.html$  /cgi-bin/scriptname/ [L,NS,PT] 

RewriteCond  /home/scriptname/www/html/%{REQUEST_FILENAME} -f  [OR] 
RewriteCond  /home/scriptname/www/html/%{REQUEST_FILENAME} -d 
RewriteRule  ^(.+)$ - [L,NS] 

RewriteCond  /%{REQUEST_FILENAME} !^.*/cgi-bin/scriptname.*$ 
RewriteRule  ^(.+)$ /cgi-bin/scriptname/$1 [L,NS,PT] 

私は両方でこれを持っている:80と:apacheのconfに443のバーチャルホストセクション。

は今、私は.htaccessファイルにこれを追加して、すべてのURLがhttpsとWWWにリダイレクトすることを確認する

RewriteEngine on 

RewriteCond %{HTTPS} off 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

動作しているようですが、私はwgetのを使用して、何が起こるかを見たとき、私は永続的に複数の301を参照してください/ cgi-bin/scriptnameを参照しています。

これは正しいですか、私はちょうど1つの301が移動した後に200を追うべきだと思っていましたか?

答えて

0

私は、次の解決策が出ているとのコメントを歓迎する、動作しているようです、私はポート443のバーチャルホストセクションで

#not www with cgi-bin  
RewriteCond  /%{REQUEST_FILENAME} ^.*/cgi-bin/scriptname.*$ 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^/cgi-bin/scriptname/(.*) https://www.example.com/$1 [L,R=301] 

#cgi-bin 
RewriteCond  /%{REQUEST_FILENAME} ^.*/cgi-bin/scriptname.*$ 
RewriteRule ^/cgi-bin/scriptname/(.*) https://www.example.com/$1 [L,R=301] 

#not www 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

#not https 
RewriteCond %{HTTPS} off 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

#not www with cgi-bin  
RewriteCond  /%{REQUEST_FILENAME} ^.*/cgi-bin/scriptname.*$ 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^/cgi-bin/scriptname/(.*) https://www.example.com/$1 [L,R=301] 

#cgi-bin 
RewriteCond  /%{REQUEST_FILENAME} ^.*/cgi-bin/scriptname.*$ 
RewriteRule ^/cgi-bin/scriptname/(.*) https://www.example.com/$1 [L,R=301] 

#not www 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

を持っているポート80のバーチャルホストセクションでこれは、urlの組み合わせごとに1 301リダイレクトするだけのようです。

関連する問題