2012-03-19 5 views
0

を書き換えるには、私は「このフォルダを呼ばれている(実際にはルート文書は、のは、Vドメインフォルダを言わせず)をドキュメントルートにのhtaccess

RewriteCond %{HTTP_HOST} appname.domain.com 
RewriteCond %{REQUEST_URI} !appname/ 
RewriteRule ^(.*)$ /appname/$1 [L] 

を.htaccessファイルappname ' appname.domain.comでは、すべてが正常に表示されます。私はURLがURLバーに appname.domain.com/appname/somefolder に書き換えることにしたくない、この

http://appname.domain.com/somefolder 

のような何かをしたいとき、今私の問題があります。 助けてください?

アップデート:私は

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC] 
RewriteCond %{REQUEST_URI} !^v-domain/ 
RewriteRule ^(.*)$ /v-domain/$1 [L] 
Vドメインで

RewriteEngine On 
RewriteBase /v-domain/ 

RewriteCond %{HTTP_HOST} appname.domain.com 
RewriteCond %{REQUEST_URI} !appname/ 
RewriteRule ^(.*)$ /appname/$1 [L] 
RewriteCond %{HTTP_HOST} appname.domain.com 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule ^appname/(.+)$ http://appname.domain.com/$1/ [R=301,L] 
################### 
RewriteCond %{HTTP_HOST} appname2.domain.com 
RewriteCond %{REQUEST_URI} !appname2/ 
RewriteRule ^(.*)$ /appname2/$1 [L] 
RewriteCond %{HTTP_HOST} appname2.domain.com 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule ^appname2/(.+)$ http://appname2.domain.com/$1/ [R=301,L] 
+0

これらのルールは、あなたが私の.htaccessファイルに入れたときのように機能するようです。 –

+0

インデックスを含むサブドメインフォルダにディレクトリを作成し、そのパスに到達しようとします。 "appname.domain.com/appname/somefolder" – razorxan

答えて

1

を持つドキュメントルートで がそれにインデックスを使用してサブドメインのフォルダにディレクトリを作成してから試してみてみその経路に到達する。あなたは、URLが、それはmod_dir's DirectorySlash interferringだように聞こえる醜い上記の方法「appname.domain.com/appname/somefolder」

に書き直されて表示されます。 DirectorySlashが有効になっている場合、mod_dirがディレクトリに対する要求があり、末尾にスラッシュがないことがわかった場合、はブラウザに対応するURLにをリダイレクトして末尾のスラッシュを含むようにします。

DirectorySlash offにすることができますが、DirectoryIndex'ing(mod_dirのDirectorySlashエントリを参照してください)については、公開の懸念があります。あなたはあなたのため、このリダイレクトを行うが、URLで/appname/ビットなしにリダイレクトすることを確認するためにいくつかのルールを追加してみてください:

RewriteCond %{HTTP_HOST} appname.domain.com 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule ^appname/(.+)$ http://appname.domain.com/$1/ [R=301,L] 

要求は要求されたエンティティであることを、ホストappname.domain.comのためである場合、これは基本的にチェックしますディレクトリは、リクエストがでなく、の末尾にスラッシュが付きます。リクエストがすでに/appname/のために書き換えられている場合、ブラウザは同じURL(appnameなし)にスラッシュをリダイレクトします。リダイレクトの後、最初のルールは内部的に/ appname /を含むようにURIを書き換えますが、リクエストはスラッシュで終わるので、mod_dirはそれを無視する必要があります。

+0

このようにして、 'appname.domain.com/folder'(末尾にスラッシュが付きません)では、禁止されたエラーが発生します。 – razorxan

+0

appnameフォルダがルートディレクトリに置かれていれば、すべて正常に動作します。私の場合、ドキュメントルートにある私のv-domainフォルダには、すべてのサブドメインフォルダが含まれています。/vドメイン/ appname、/ vドメイン/ appname2、/ vドメイン/ appname3。これらのルールを編集して、これらのパスで正しく動作させるにはどうすればよいですか?例えば '/ v-domain/appname/folder'です。 – razorxan

+0

さらに私は、URLの2つの部分を分けて書き換えたいと思います。私のドキュメントルートでは、このhtaccessを使用して、すべての非サブドメインリクエストをv-domainフォルダにリダイレクトします。 'RewriteCond%{HTTP_HOST}!^ www \ .domain \。ドメイン名.com $ [NC] RewriteCond%{REQUEST_URI}!^ v-domain/ RewriteRule ^(。*)$/v-domain/$ 1 [L] ' 次に、サブドメインのルールをv-domainフォルダに書き換えたいと思います。 @Jon – razorxan