0

htaccessコードのみを使用してサブドメインを作成できるかどうか疑問に思っていました(ホスティングコントロールパネルで設定せずに)

「モバイル」という名前のフォルダーがあります。その場所は次のようになります: http://www.domain.com/mobile

http://mobile.domain.comに入力してモバイル フォルダを表示できるようにしたいのですが、htaccess にコードを記述するだけで実現できますか? もしそうなら、どうすればいいですか?

ありがとう

4

2 に答える 2

1

*.domain.comドメインのすべてのリクエストを処理するように構成されている限り、これを行うことができます。その場合は、mobile.domain.comの DNS CNAME がwww.domain.com.

必要なサブドメインがわかっている場合は、次のようにそれらを列挙できます (これらのルールをドキュメント ルートの htaccess ファイルに入れます)。

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.) [NC]
RewriteCond %{HTTP_HOST} ^mobile\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/mobile/
RewriteCond %{DOCUMENT_ROOT}/mobile%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/mobile%{REQUEST_URI} -d
RewriteRule ^(.*)$ /mobile/$1 [L]

それ以外の場合、これを任意に実行したい場合は、もう少し複雑になります。

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.) [NC]
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ [NC]
RewriteCond %1:%{REQUEST_URI} !^([^:]+):/\1/
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ [NC]
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -d
RewriteRule ^(.*)$ /%1/$1 [L]
于 2012-08-20T10:12:37.117 に答える
0

ドメインの構成によって異なります。

次のように、ワイルドカードを使用して設定した場合ServerAlias

ServerName example.com
ServerAlias *.example.com

DocumentRoot /var/www/example.com/

リクエストはフォルダに.htaccess到着し、評価され、mod_rewriteを使用できるようになります。ただし、ディレクティブを指定しない場合ServerAlias、リクエストはフォルダに到達しないため、それを使用して何もできなくなります。

于 2012-08-20T10:06:51.243 に答える