2009-06-29 11 views
2

私はその.htaccessのワイルドカードサブドメイン

http://subdomain.example.comhttp://example.com/index.php/accounts/subdomain/にマッピングされているように、.htaccessファイルとワイルドカードのサブドメインを使用してソリューションを実装しようとしています。私のルールは次のようになります:

RewriteCond %{HTTP_HOST} !www.example.com [NC] 
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).example.com [NC] 
RewriteRule ^(.*/) /index.php [PT,L] 

これはうまくいきますが、それ以外はすべて無視します。ルールに何かを追加しようとすると、たとえば:

RewriteRule ^(.*/) /index.php/hello [PT,L] 

私は500の内部サーバーエラーが発生します。これをどうやって稼働させるのですか?

答えて

3

あなたはおそらく、あなたの支配からindex.phpを除外する必要があります。

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.example\.com$ [NC] 
RewriteRule !^index\.php($|/) index.php/accounts/%2%{REQUEST_URI} [PT,L] 
+0

ありがとう、私は何か他のもの(-fと-d)を使用しましたが、これもうまくいきます。 – Zahymaka

1

はあなたのRewriteRuleサブドメインと元のリクエストURIを含むものにURLをリライトすること

RewriteRule ^/(.*)$ /index.php/accounts/%1/$1 [PT] 

にを変更してみてください。

EDIT:多分それはコメントで述べたように

RewriteRule ^(.*)$ /index.php/accounts/%1/$1 [PT] 

する必要があります。

+0

私は何か他のものにindex.phpを変更する場合でも、私はこれを試してみましたが、それは発射されていないよう。 – Zahymaka

+0

ああ...多分.htaccessにあるときにパターン^(。*)$(スラッシュなし)を使う必要があります。 (可能であれば、これらのディレクティブをメインのサーバー構成ファイルに置くことをお勧めします) –

+0

以下を参照してください。すべての助けをありがとう! – Zahymaka

1

これは私が自分のサイトのサブドメインをリダイレクトするために使用するコードの適合です。私はベストプラクティスという主張はしていませんが、それは機能します。

RewriteCond %{HTTP_HOST} ^(.*)\.com$ [NC] 
RewriteCond %1 !^(www)\.example$ [NC] 
RewriteRule ^.*$ http://www.example.com/index.php/accounts/%1/ [R=301,L] 
+0

これは機能しますが、サイトのユーザーをリダイレクトしたくありません。ありがとう、すべて同じ。 – Zahymaka

+0

私は今、それをテストする立場にはいませんが、[R = 301、L]を[PT、L]に置き換えるだけではうまくいかないでしょうか? – Mathew

関連する問題