codeigniter
で動的サブドメインを実装するにはどうすればよい.htaccess
ですか?
3 に答える
このルールはサブドメインを処理します
RewriteCond %{HTTP_HOST} ^([a-z0-9]+).yoursite.com. should probably also include the hypen -. RewriteCond %{HTTP_HOST} ^([a-z0-9-]+).yoursite.com.
このコードは私のサイトで機能しています。サイトを他のドメインまたはフォルダーに移動できます (必要なものは何でも)。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|application/assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
</IfModule>
サイトでサブドメインが有効になっていることを確認してください。test.yoursite.com と入力すると、サイトのウェルカム ページが表示されます。代わりに DNS ルックアップ エラーが発生する場合は、サイトでサブドメインが有効になっていないことを意味します。
サイトでサブドメインを有効にする*.yoursite.com
には、DNS ゾーン レコードにエントリを追加します。
次に、次のコードを.htaccess
ファイルに挿入し、適切に置き換えyoursite
ます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#codeigniter specific rule
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#codeigniter specific rule
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#this rule removes www from the URL if its used
RewriteCond %{HTTP_HOST} ^www.
RewriteRule ^(.*)$ http://yoursite.com/$1 [R=301,L]
#the auth system URIs which don't have subdomains
RewriteCond %{HTTP_HOST} ^yoursite.
RewriteRule ^(signup|signin|forgot_password)/?$ index.php?/auth/$1 [L]
#this rule handles the subdomains
RewriteCond %{HTTP_HOST} ^([a-z0-9]+).yoursite.com
RewriteRule ^(.*)$ index.php?/public_site/%1/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
必要に応じて、認証システムまたはサブドメインを処理するためのルールを追加します。自分のサイトでかなりの URI を取得したことは知っています。
重要な注意点:
デフォルトでは、サブドメイン URI は、上記のルールがなくても codeigniter で非常にうまく機能することがわかりました。test.yoursite.com/#
の代わりに URI を使用して、すべてのサイトにアクセスできますwww.yoursite.com/#
。しかし、URI はきれいではなく、URI にアクセスする方法は複数あります。
したがって、上記のルールを使用すると、きれいな URIが得られ、さらに重要なことに、一意の URIが得られます。したがって、上記のルールを使用すると、サインアップ ページの URI が 1 つだけ取得されますhttp://yoursite.com/signup
。