1

私は検索しましたが、多くのスレッドが近くにあることがわかりましたが、探しているものはまったくありませんでした...

私のサイト、たとえば example.com で、サブドメイン secure.example.com を作成しました。

このサブドメインには SSL があります。

私がやりたいのは、https://secure.example.com/path/ へのリクエストを www.example.com/path/ にリダイレクトし URL をhttps://secure.example.com/path/として表示したままにすることです。

subdomain.example.com の目的は SSL であるため、上記のリダイレクトは SSL で動作する必要があることに注意してください。

htaccessで他のいくつかのリダイレクトを使用したいと思います:1)サブドメインを無視して非wwwをwwwにリダイレクトします(したがって、secure.example.comはwww.secure.example.comにはなりません)2)/index.phpをリダイレクトします/ 3) 最後になりましたが、secure.example.com で SSL を強制します。

さらに、ショッピング カート ソフトウェアには、以下に示すように、機能と SEO のための追加の htaccess ステートメントがあります。

私の現在のルートhtaccess:

# Prevent Directoy listing 
Options -Indexes

# Prevent Direct Access to files
<FilesMatch "\.(tpl|ini|log)">
 Order deny,allow
 Deny from all
</FilesMatch>

# Turn Rewrite Engine On
RewriteEngine On

## index.php to root
Options +FollowSymlinks
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.example.com/ [R=301,L] 

## non-www to www ignore subdomains
RewriteCond %{HTTP_HOST} ^example.com [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
4

1 に答える 1

1

さて、特にでhttps://secure.example.com/path/見つかったコンテンツを表示するURLについては、 http://www.example.com/path/2つのことができます。最良の方法は、2つのドメインが同じドキュメントルートから提供される場合です。

それらは同じホストと同じドキュメントルート上にあります。サブドメインは、文字通り、サブドメインを使用したルート設定の下のサブフォルダーです。私のホストの助けを借りて、これで正しく解決され、SSLがインストールされました。

サブディレクトリは、それ自体のドキュメントルートから書き換えることができない可能性があるため、問題になる可能性があります。例えば:

  • ドメイン->ドキュメントルート
  • www.example.com- > / path / to / htdocs
  • secure.example.com- > / path / to / htdocs / secure

/path/to/htdocs/secureのリクエストを書き換えるために.htaccessファイルがあった場合https://secure.example.com/。ここでの問題は、親ディレクトリに書き直す必要があることです。apacheではそれができません。逆の場合は、のリクエストをhttp://www.example.com/に書き換えることができます/secure。また、2つのドメインのドキュメントルートが同じである場合は、書き換えることもできます。ただし、secureがwwwのドキュメントルートのサブディレクトリである場合はそうではありません。

私のホストはmod_proxyがインストールされていると言っています。私のApache設定は、これらがインストールされていることを示しています:proxy_module(static)proxy_connect_module(static)proxy_ftp_module(static)proxy_http_module(static)proxy_ajp_module(static)proxy_balancer_module(static)

つまり、少なくともP書き換えフラグを使用してリクエストをmod_proxyに送信できるため、次のようなことができます。

RewriteEngine On
RewriteRule ^path/$ http://www.example.com/path/ [L,P]

secure.example.comのドキュメントルートのhtaccessファイルにあります。これは、特にURI/path/をプロキシするだけで、のようなものはプロキシしません/path/foo/bar.html。で始まるすべてのものが必要な場合は/path/、それと照合できます。

RewriteRule ^path/(.*)$ http://www.example.com/path/$1 [L,P]

リダイレクトの問題がある場合は、ProxyPass代わりに次を使用することをお勧めします。

ProxyPass / http://www.example.com/
ProxyPassReverse / http://www.example.com/

ロケーションヘッダーを書き換えてリダイレクトもプロキシされることを除いて、同じことを行います。

于 2012-08-15T04:02:58.393 に答える