サブドメインをWeb ルートの上にあるディレクトリに書き換えるのに少し問題があります。私は以前に mod_rewrite について多くの経験を積んできましたが、この特定の問題は私には理解できません。
私が知る限り..
、サブドメイン ファイルが配置されているディレクトリを決定するために相対ディレクトリ ( ) を使用することを主張しているため、mod_rewrite は癇癪を起こしています。
残念ながら、私のクライアントの仕様には 2 つの制限があります。
- サブドメインを Web ルートのサブディレクトリとして配置することはオプションではありません。サブドメインは、特定のサブドメイン以外のどこからでもアクセスできてはなりません (ディレクトリの競合が発生する可能性があります)。これは、そのディレクトリがルート ドメインのアプリケーションで使用される可能性があるため、からアクセスできない
http://subdomain.example.com/
ことを意味します。http://example.com/subdomain/
- 共有ホスティングが使用されるため、サブドメイン ファイルへの絶対パスはクライアントに認識されません。
誰かがこの問題で私を助けることができれば、それは大歓迎です! 将来のプロジェクトでもこれを使い始めたいと思っています。これは、現在サブドメインを処理する方法と比較して非常にエレガントなソリューションです...誰かがそれを機能させることができれば!
編集:私が期待していたよりもむしろ、要求http://subdomain.example.com/
すると返されることを指摘することは有用かもしれないと考えました。ルート ドメインを要求すると、すべてが期待どおりに機能します。400 Bad Request
500 Internal Server Error
現在の.htaccess
ファイル。
# Begin Rewrite Module for http://*.example.com/
# ==============================================
<IfModule mod_rewrite.c>
# Turn the rewrite engine on.
RewriteEngine On
RewriteBase /
# Map subdomains to their respective directories.
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$
RewriteRule (.*) /../public_subdomains/%1/$1 [L]
# Rewrite all requests for the root domain to always be served through "index.php".
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.php/$1 [L]
</IfModule>
現在のディレクトリ構造。
/
application/
cgi-bin/
framework/
public_html
public/
css/
images/
js/
.htaccess
index.php
public_subdomains/
mysubdomain/
index.php
anothersubdomain/
index.php