2011-12-11 32 views
0

私の主なアプリケーションサイトについては、domain.com/whatever & www.domain.com/whateverをそのまま保存したいと思います。.htaccess拡張サブドメインURL書き換え

私のユーザーにとっては、ホームページ用に自分のアプリケーションをusername.domain.comに設定しています。これは素晴らしく、そのページを表示しますが、問題は私がusername.domain.com/one、username.domain.com/one/two、username.domain.com/one/two/threeを処理しようとするときです

ここで私は成功した私は(それが動作)に変更することを必要としない

RewriteCond %{HTTP_HOST} ^(^.*)\.domain\.com$ 
    RewriteRule ^(.*)$ u.php 

をu.phpするサブドメインを送信することを持っているものは現在のです。私は今、必要なのである:?

  1. username.domain.comは
  2. username.domain.com/oneがa.phpするために書かれている(現在の式の上使用して偉大な作業)u.phpするために書かれている要求= 1
  3. username.domain.com/one/twoはs.phpするために書かれている?要求= 1 &のident = 2

編集

ここで私は微調整する前に働いていた表現の一部でありますアプリが流出するユーザーのサブドメインの、ちょうど助けるために:

RewriteRule ^([a-z\-]+)/?$ a.php?request=$1 [L] 
    RewriteRule ^/([a-z]+)/([a-z0-9\-]+)/?$ /s.php?request=$1&ident=$2 [L] 
    RewriteRule ^u/([a-z]+)/([a-z]+)/([a-z0-9\-]+)/?$ /s.php?user=$1&request=$2&ident=$3 [L] 

は私の問題は、現在すべてが書き換えられていないuser.domain.com/oneしようとしていることであることを

を覚えていてください。それはまだu.phpに行きますが、s.phpに行きたいのですか?request = $ 1

もう一度お手伝いをしてください!

+0

サブドメインはwwwドメインとは異なるフォルダに移動しますか? –

+0

「うまくいかない」というコードを投稿してください。 – Gerben

+0

Ok - 更新されました。私はすべてのことをうまくいっているように編集したので、もう一度読んでください。 – ingage

答えて

0

あなたの最初の行は、実際に「u.phpするためにそれを送って、それが何であれ」と言っている:あなたがここにある

RewriteRule ^(.*)$ u.php 

一つの問題は、あなたが式を入れている順序です。そのため、あなたの[L]フラグの... http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_l

RewriteRule ^([a-z\-]+)/?$ a.php?request=$1 [L] ## <- would match one/two/three and would stop the script from continuing because of the [L] flag. 
RewriteRule ^/([a-z]+)/([a-z0-9\-]+)/?$ /s.php?request=$1&ident=$2 [L] 
RewriteRule ^u/([a-z]+)/([a-z]+)/([a-z0-9\-]+)/?$ /s.php?user=$1&request=$2&ident=$3 [L] 

考えられる解決策

私は1つのmatch式にすべてのあなたの意図を連結している、私はそれはあなたのために働く願っています...

RewriteRule ^([a-z\-]+)?/?([a-z\-]+)?/?([a-z\-]+)?/?$ u.php?first=$1&second=$2&third=$3 [L] 
RewriteRule ^(.*) u.php [L] 

このコードは、いくつかの空のパラメータを送信します...あなたはPHPコードでチェックする必要があります。

あなたは本当にあなたが常にあなたのコードを分割できることをしたくない場合は...

RewriteRule ^([a-z\-]+)/([a-z\-]+)/([a-z\-]+)/?$ u.php?first=$1&second=$2&third=$3 [L] 
RewriteRule ^([a-z\-]+)/([a-z\-]+)/?$ u.php?first=$1&second=$2 [L] 
RewriteRule ^([a-z\-]+)/?$ u.php?first=$1 [L] 
RewriteRule ^(.*) u.php [L] 

お知らせ式の順序。 3番目の式は実際には1/2/3と一致します。

ここでは[a-z-]を使用しています。自分のコードを見ると、数字や大文字のサポートを追加する方法がわかります。