2016-05-03 14 views
0

メインドメインをパスに書き直したい場合や、別のパスにクエリーを追加しない場合は、私はサブドメインをサポートするためにワイルドカードCの名前を用意しています。htaccessサブドメインをフォルダに書き直します

www.xxx.com =>正常に動作します

abc.xxx.com =>フォルダ

abc.xxx.com/abc-xyz => www.xxx.comにポイントそしてこれは私が今持っているもので、通常は

動作するはずです:私たちが見ることができるように

<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    RewriteEngine On 

    RewriteCond %{HTTP_HOST} !^([w]{3,3}[.]{1,1}){0,1}example.com$ 
    RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]*)[.]example.com$ 
    RewriteRule ^$ portfolio/index.php?pageDetailId=%1 [NC,L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 

    RewriteCond %{HTTP_HOST} !^([w]{3,3}[.]{1,1}){0,1}example.com$ 
    RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]*)[.]example.com$ 
    RewriteRule ^(.*)$ $1?pageDetailId=%1 [QSA,L] 
</IfModule> 

は、私は必要abc.example.com/abc-xyzにおける変数としてABCいます。疑問をもって返信してください。私はいろいろな方法を試してみました。この同じhtaccessは1つのドメインでスムーズに動作しますが、新しいドメインを作成したときにはそのドメインでは動作しません。ありがとう。

注:これは、httpdの上で動作しますが、ないapache2の上

+0

作業とどのようにそれを処理する必要がありますされていないURLとは何ですか? – anubhava

+0

abc.example.comは、 'RewriteRule^$ portfolio/index.php?pageDetailId =%1 [NC、L]'が機能していないということを意味する 'portfolio/index.php'を指さない。 –

答えて

1

はこのようにそれを持っている:

Options +FollowSymlinks 
RewriteEngine On 

RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{HTTP_HOST} ^(?!www\.)([\w-]+)\.example\.com$ [NC] 
RewriteRule ^(index\.php)?$ portfolio/index.php?pageDetailId=%1 [NC,L,QSA] 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteCond %{HTTP_HOST} ^(?!www\.)([\w-]+)\.example\.com$ [NC] 
RewriteRule ^(.+)$ index.php?pageDetailId=%1&/$1 [L,QSA] 

RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 
+0

私はすべてのルールを削除して保存しただけです:RewriteCond%{HTTP_HOST} ^(?! www \。)([\ w - ] +)\。example \ .com $ [NC] RewriteRule^$ portfolio/index.php?pageDetailId =%1 [NC、L]内部パスは 'portfolio /'に変更されず、依然としてメインインデックスを指していました。 –

+0

A1。はい、ブラウザにhttp://abc.example.comを入力して、http://abc.example.com/index.php?pageDetailId =%1'を開きます。この同じルールは、httpd(古いサーバー)では正しく開きますが、apache2(新しいサーバー)では機能しません。 A2。ブラウザで 'http://abc.example.com/portfolio/index.php?pageDetailId = abc'と入力すると開くようになります。 –

+0

はい、あなたは正しいです! –