私の Web サーバーには、example.com/site
(の/var/www/site
) に 1 つの Web サイトがあります。
経由でアクセスできるようにしたいのですsite.example.com
が、これを有効にするには mod-rewrite を使用する必要があることを認識しています。
これを行うために使用できる簡潔なスニペットはありますか? 他のサイトにもこの方法でアクセスできるように、拡張可能にする必要があります。前もって感謝します。
私の Web サーバーには、example.com/site
(の/var/www/site
) に 1 つの Web サイトがあります。
経由でアクセスできるようにしたいのですsite.example.com
が、これを有効にするには mod-rewrite を使用する必要があることを認識しています。
これを行うために使用できる簡潔なスニペットはありますか? 他のサイトにもこの方法でアクセスできるように、拡張可能にする必要があります。前もって感謝します。
これが 1 つの特定のサブドメインの問題である場合:site
その 1 つのサブドメインだけを明示的に書き換える必要があります。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/site/
RewriteRule ^(.*)$ /site/$1 [L]
2番目の条件は、内部書き換えループを防ぎ、URIを次のように見せます/site/site/site/site/site/site/
...
これは、ドキュメント ルートの .htaccess ファイルに入ります。/var/www/
サブドメインを任意にリダイレクトしたい場合は、これを試すことができます:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^\.]*)\.example\.com$ [NC]
RewriteCond %{REQUEST_URI}:%1 !^/([^/]+)[^:]*:\1 [NC]
RewriteRule ^(.*)$ /%1/$1 [L]
ここで、2 番目の条件は同じ目的を果たします。これは、リクエスト URI がホストからのサブドメインの一致で始まっていないことを確認しようとします。より良い説明については、https://stackoverflow.com/a/11508430/851273を参照してください。
最初に、ドメイン example.com のすべてのサブドメインを受け入れるようにサーバーを構成し、サブドメインを受け入れる必要がある仮想ホストにリダイレクトする必要があります。その後、次のルールを使用して、そのサブドメインを内部的に同じ名前のフォルダーに書き換えることができます。
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.com$
RewriteRule ^ %1%{REQUEST_URI} [L]