2017-05-06 11 views
2

ドメイン/サブドメインexample.com/www.example.com(明らかに両方とも/public_htmlを指します)とこのディレクトリに置かれたウェブサイトは完全に機能します。サブディレクトリ/public_html/wwwnewとサブドメインwwwnew.example.comを作成しました。このサブドメインがこのサブフォルダをポイントするようにしたいが、ユーザが入力したURLを変更したくない(wwwnew.example.com)。もちろん、.htaccessを使用する必要があります。URLを変更せずに.htaccessを使用してサブドメインにサブディレクトリをリダイレクトする方法

私の現在の.htaccessファイル:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(wwwnew.)?example.com$ 
RewriteRule ^(/)?$ wwwnew [L] 

RewriteBase/
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^(.*) index.php [L] 

現在、私はwwwnew.example.com/wwwnewからwwwnew.example.com URLが変更に入力したとき。この/wwwnewが消えて欲しいです...

助けてください?

+1

"もちろん、私は' .htaccess'を使う必要があります - なぜですか?あなたはサーバーの設定にアクセスできませんか? – MrWhite

答えて

0
RewriteRule ^(/)?$ wwwnew [L] 

wwwnewは、物理サブディレクトリ(あなたはそれがあると言っている)、あなたは(だけでなく、好ましくは、インデックス文書)RewriteRulesusbtitionの末尾に末尾のスラッシュを追加する必要がある場合には。そうしないと、mod_dirはスラッシュを追加して(URLを修正するために)、外部301リダイレクト(あなたが見ていると思われる)をトリガーします。これはwwwnew.example.com/wwwnew/(末尾にスラッシュが付いています)へのリダイレクトですが、質問に記載されているようにwwwnew.example.com/wwwnewではありません。

RewriteCond %{HTTP_HOST} ^(wwwnew.)?example.com$ 

しかし、あなたの状態は頂点ドメインとサブドメインの両方の要求を書き換えます。あなたの説明では、(別のサイトを持っている)頂点ドメインではなく、サブドメインからの書き換えだけを記述します。

ので、代わりに次のことを試してください。

RewriteCond %{HTTP_HOST} ^wwwnew\.example\.com 
RewriteRule ^$ wwwnew/ [L] 

.htaccess(/)?の必要はありません。しかし、この要求を処理したい文書(すなわちインデックス文書)に直接書き直すべきです(そうでなければ、mod_dirはこれを行う必要があります)。たとえば:

RewriteRule ^$ wwwnew/index.php [L] 

あなたは/wwwnewに誤ったリダイレクトは、ブラウザによってキャッシュされているように、ブラウザのキャッシュをクリアする必要があります。

UPDATE:

しかし、上記は、任意のURLパス(質問に記載されているように)することなく、裸のサブドメインに対する要求を書き換えます。サブディレクトリにこのサブドメイン(。例えばwwwnew.example.com/<something>)について任意のリクエストを書き換えるためには、あなたは、代わりに次のような何かをする必要があります:これは私たちがリライトループを得ることはありませんが保証

RewriteCond %{HTTP_HOST} ^wwwnew\.example\.com 
RewriteRule !^wwwnew/ wwwnew/index.php [L] 

を。

+0

大きな感謝!あなたのルールはうまくいった。しかし、私はそこにWrodPressベースのソリューションを入れました。あなたは "私はWordPressによって生成されると思うリクエストwwwnew.example.com/something"に何が起こるべきか尋ねました。だから、すべてのリクエストは/wwwnew ...なしでなければならない。助けてもらえますか? 正直言って私はネットワーク管理者であり、このサブフォルダとサブドメインを準備するよう頼まれました。私たちの新しいサイトを作ったガイがそれを求めました。私はApacheにアクセスできない。それは外部ホスティングプロバイダです。私はコンサルタントから、htaccessの操作が唯一の方法であると言われました。 – pgrzeda

+0

私は自分の答えを更新しました。 – MrWhite

+0

この回答がうまくいったら、それを未承諾の質問のキューから削除するために受け入れたものとしてマークしてください。ありがとう、非常に感謝:) – MrWhite

関連する問題