.htaccessを使用してサブドメインをディレクトリに書き換えることはできますか?
例:
の内容を示しています
.htaccessを使用してサブドメインをディレクトリに書き換えることはできますか?
例:
の内容を示しています
回答:
これを.htaccessファイルに入れてみてください。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteRule ^(.*)$ /subdomains/sub/$1 [L,NC,QSA]
より一般的なルール(だけでなく、任意のサブドメインで機能するsub
)については、最後の2行を次のように置き換えます。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ subdomains/%1/$1 [L,NC,QSA]
http://test.domain.com/subdomains/test/
表示したいだけの場合は、にリダイレクトされますhttp://test.domain.com/
test.domain.com/subdomains/test
-おそらくここで何か他のことが起こっています。RewriteBase /
直後に追加できますRewriteEngine on
か?また、表示を維持したい場合は、test.domain.com
mod_proxyと[P]
フラグを使用する必要があります。
私はmod_rewriteの専門家ではないので、苦労することがよくありますが、私のサイトの1つでこれを行ったので、状況によっては他のフラグなどが必要になる場合があります。私はこれを使用しています:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$
RewriteCond %{REQUEST_URI} !^/subdomains/subdomain
RewriteRule ^(.*)$ /subdomains/subdomain/$1 [L]
サイトの残りの部分のその他の書き換えルールは、サブドメインの書き換えに干渉しないように、後で実行する必要があります。
.htaccess
(私がやったように)最初の誰かがこのページに来た場合、実際の.htaccess
ファイルを作成する以外に、それを有効にするにAllowOverride
は、VirtualHost
設定を設定する必要があります(stackoverflow.com/a/22819550/1657502) 、Apacheの有効化rewrite
モジュールをして、Apacheの(再起動stackoverflow.com/a/5758551/1657502)
www.
プレフィックスは、おそらく書き換えよりもリダイレクトを介してサポートするのが最適です。
.htaccessで次のルールを使用して、サブドメインをサブフォルダーに書き換えることができます。
RewriteEngine On
# If the host is "sub.domain.com"
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
# Then rewrite any request to /folder
RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]
行ごとの説明:
RewriteEngine on
上記の行は、URLを書き換えるためにエンジンをオンにするようにサーバーに指示しています。
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
この行は、正規表現パターンを使用してHTTPホストと照合するRewriteRuleの条件です。条件は、ホストがsub.domain.comの場合、ルールを実行することを示しています。
RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]
ルールはhttp://sub.domain.com/fooと一致し、内部的にhttp://sub.domain.com/folder/fooにリダイレクトされます。
sub.domain.comをサブドメインに置き換え、フォルダーをサブドメインを指すフォルダーの名前に置き換えます。
私は同じ問題を抱えていました、そしてhttp://www.webmasterworld.com/apache/3163397.htmで詳細な説明を見つけました
私の解決策(サブドメインの内容は次のフォルダーにあるはずですsd_subdomain
:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} subdomain\.domain\.com
RewriteCond $1 !^sd_
RewriteRule (.*) /sd_subdomain/$1 [L]
これにより、同じフォルダのサブドメインにリダイレクトされます。
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain\.com/subdomains/%1
この.htaccessファイルをサブドメインフォルダに置いてみてください。
RewriteEngine On
RewriteRule ^(.*)?$ ./subdomains/sub/$1
http://sub.domain.com/のみを表示したい場合は、http://domain.com/subdomains/sub/にリダイレクトされます。
サブドメインディレクトリをリダイレクトします。
RewriteCond %{HTTP_HOST} ^([^.]+)\.(archive\.example\.com)$ [NC]
RewriteRule ^ http://%2/%1%{REQUEST_URI} [L,R=301]
サブドメインリクエストの場合は、次を使用します。
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.band\.s\.co
RewriteCond %{HTTP_HOST} ^(.*)\.band\.s\.co
RewriteCond %{REQUEST_URI} !^/([a-zA-Z0-9-z\-]+)
RewriteRule ^(.*)$ /%1/$1 [L]
必要なサブドメイン名と同じフォルダを作成するだけです。:フォルダは、このようなが存在でなければなりませんdomain.com/subためsub.domain.com。
http://test.domain.com
しますが、に移動すると、URLによってにリダイレクトされhttp://test.domain.com/subdomains/test/
ます。/subdomains/test/
最後にを表示せずに可能ですか?