2012-03-11 10 views
5

可能性の重複:
Apache rewrite based on subdomainサブドメインをURLの変数に書き換えるにはどうすればよいですか?

は、それがこのようなURLを書き換えることは可能ですか?

www.foo.website.com/some-page 

私が書き換えについて聞いてるのよ

www.website.com/some-page?var=foo 

にリダイレクトしていない(私はそれはそれはと呼ばれるものだと思います)。つまり、最初のURLをアドレスバーに残しておき、サーバーが2番目のURLを取得するようにします。

私はURLの書き換えを行うには、これまで、この作業を取得するために私の哀れな試みは

:-)無残に失敗している私は、この.htaccessファイルでもワードプレスで使用して持っているされていることを追加する必要がありますどのように理解したことがありません次のコード:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /~kbj/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /~kbj/index.php [L] 
</IfModule> 

任意のヘルプまたはアドバイスは非常に高く評価されるだろう!

+2

http://stackoverflow.com/questions/49500/apache-rewrite-based-on-subdomain –

答えて

2

は、多言語ウェブサイトのためですが、あなたは非常に簡単にあなたが求めているものにこれを適用することができます:「var」(笑)に「LANGUAGE」を変更します。

これからは多くのサブ言語で対応できるように、あなたがしたいことがあります。 あなたのホストをチェックする:「既知の言語」が含まれている場合はグローバル変数(= Apacheの視点からの環境変数)に追加し、最後に「言語」変数が設定されていない場合は、言語。最後に、パラメータとして追加します。

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.website\.com$ 
    RewriteRule ^(.*)$ "http://www.website.com/$1?var=%1" [P] 

    RewriteCond %{HTTP_HOST} ^(www\.)?(us|fr|pt)\.mydomain\.com$ 
    # Create an environment variable to remember the language: 
    RewriteRule (.*) - [QSA,E=LANGUAGE:%2] 
    # Now check if the LANGUAGE is empty (= doesn't exist) 
    RewriteCond %{ENV:LANGUAGE} ^$ 
    # If so, create the default language (=es): 
    RewriteRule (.*) - [QSA,E=LANGUAGE:es] 
    # Add the language to the URI (without modifying it): 
    RewriteCond (.*) $1?language={ENV:LANGUAGE} [QSA] 

</IfModule> 

(注:してください。適切なインデントを使用してください)。

0

はこれを試してみてください:

RewriteCond %{HTTP_HOST} ^([^.]+).domain.com$ 
RewriteRule (.*) http://www.domain.com/$1?subdomain=%1 

それはサブドメインとして検出し、GETパラメータとして添付サブドメイン名とメインドメインのファイルにマップし、すべてを取ります。

2
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.website\.com$ 
RewriteRule ^(.*)$ "http://www.website.com/$1?var=%1" [P] 

Pフラグを使用してリクエストをプロキシします。私が説明しよう何

http://httpd.apache.org/docs/current/rewrite/flags.html#flag_p

+0

ご返信ありがとうございます。あなたが提案したコードを使ってみましたが、残念ながらそれは動作しませんでした。 http://pastebin.com/4i7LKn48以外の.htaccessファイルからすべてを削除してから、www.test.website.comにアクセスしてみると、「サーバーが見つかりません」というエラーが表示されます。なぜそれが機能していないのか?あなたの助けをもう一度ありがとう。 – Nate

関連する問題