0

昨日これについて質問しましたが、まだhttpd.confで問題が発生しています。

私がしたいのはこれです:

  • ユーザーのリクエストhttp://www.mysite.com/などmysite.com。その後、にリダイレクトされます。https://www.mysite.com/shop/

  • /shopまた、ユーザーが入力したリクエストが次のように書き換えられる場合でも、サブディレクトリの下のリクエストもすべてHTTPSに書き換えられるhttp://www.mysite.com/shop/help/ようにしたいと思います。https://www.mysite.com/shop/help/

これが現在の私の設定ですが、機能していません。

Listen *:443 https
Listen *:80 http

<VirtualHost *:80>
    RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^(shop/.*)$ https://%{HTTP_HOST}/shop/$1 [NC,R=301]
    RewriteRule ^/$ https://%{HTTP_HOST}/shop/ [NC,R=301,L]
</VirtualHost>

<VirtualHost *:443>
    SSLEngine On
    SSLAppName QIBM_HTTP_SERVER_ZENDSVR
    SetEnv HTTPS_PORT 443
    RewriteEngine on
    RewriteRule ^/$ https://%{HTTP_HOST}/shop/ [NC,R=301]
</VirtualHost>
4

1 に答える 1

1

まず、サーバーがリクエストを受信したときにmod_rewriteが起動することを確認します。たとえば、HTTPホストからHTTPSサーバーにすべてのリクエストをリダイレクトするには

<VirtualHost *:80>
    RewriteEngine on
    RewriteRule .* https://%{HTTP_HOST}/shop/ [R,L]
</VirtualHost>

次に、試してください

<VirtualHost *:80>
    RewriteEngine on
    RewriteRule ^/?shop/(.*) https://%{HTTP_HOST}/shop/$1 [NC,R=301,L]
    RewriteRule ^/?$ https://%{HTTP_HOST}/shop/ [R=301,L]

    # other directives
</VirtualHost>

<VirtualHost *:443>
    RewriteEngine on
    RewriteRule ^/?$ https://%{HTTP_HOST}/shop/ [R=301,L]

    # other directives
</VirtualHost>
于 2012-06-06T07:51:30.913 に答える