web-dev-qa-db-ja.com

.htaccessを使用して、サブドメインを表示せずに、サブドメインを対応するサブディレクトリに書き換えます

.htaccessに少し問題があります。たとえば、test.example.comに移動すると、フォルダーは/sub/testにあります。ただし、test.example.com/sub/testと表示されます。 .comの後のパスを非表示にするにはどうすればよいですか?または、subフォルダー内のすべてのフォルダーがサブドメインであるように、Apacheでそれを行う方法はありますか?

どうすればいいのかわかりません。

私はこれを使用しています:

RewriteCond %{HTTP_Host} ^((?!www\.).+?)\.example\.com$ [NC]
RewriteRule ^((?!sub/).*)$ /sub/%1/$1 [L]

編集:subフォルダーに作成されたすべてのフォルダーをサブドメインとして自動的に作成したい。ユーザーがフォルダを作成するように、サブドメインです。

2
Oggy mot

ルールを削除して、次のようにします。

<VirtualHost IP>
    ServerName test.example.com
    DocumentRoot /whatever/sub/test

whateverを正しいパスに、IPを仮想ホストの構成方法に基づいて関連するIP /ポートに置き換えてください)

動的仮想ホストについては、モジュールmod_vhost_aliashttp://httpd.Apache.org/docs/2.4/mod/mod_vhost_alias.html )をご覧ください。ドキュメントから引用しています:

For simple name-based virtual hosts you might use the 
following directives in your server configuration file:

UseCanonicalName    Off
VirtualDocumentRoot "/usr/local/Apache/vhosts/%0"

A request for http://www.example.com/directory/file.html will be 
satisfied by the file
/usr/local/Apache/vhosts/www.example.com/directory/file.html.

それ以外の場合、書き換えルールでは、[P]をフラグとして追加するだけで機能する場合がありますが、一般的なルールとして、物事を行うより簡単な方法を見つけて、そうでない場合にのみ書き換えを使用することを常にお勧めします(複雑さのため)それが追加されます)。

1
Patrick Mevzek