htaccessへの記述によってリダイレクトをしたいと考えています。

なお、mod_rewriteは導入しています。
記述方法をご教授頂ければ幸いです。

http://xxx.hoge.com/
 ↓
http://hoge.com/?uid=xxx

http://xxx.hoge.com/bbs.php?A=1&B=2
 ↓
http://hoge.com/bbs.php?uid=xxx&A=1&B=2

http://hoge.com/?uid=xxx の場合はそのまま

http://hoge.com/bbs.php?uid=xxx&A=1&B=2 の場合はそのまま

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:2007/12/27 09:59:59
  • 終了:2008/01/03 10:00:02

回答(4件)

id:y-kawaz No.1

y-kawaz回答回数1421ベストアンサー獲得回数2262007/12/27 10:19:51

ポイント23pt

これでどうでしょうか?

 RewriteEngine   on
 RewriteCond %{HTTP_HOST} !^hoge\.com$
 RewriteRule (.*) http://hoge.com/$1?uid=xxx [QSA]
id:hello039

回答ありがとうございます。

質問の仕方が正しくありませんでしたので訂正させてください。

http://○○.hoge.com/

 ↓

http://hoge.com/?uid=○○

http://○○.hoge.com/bbs.php?▲=△&▼=▽

 ↓

http://hoge.com/bbs.php?uid=○○&▲=△&▼=▽

http://hoge.com/?uid=○○ の場合はそのまま

http://hoge.com/bbs.php?uid=○○&▲=△&▼=▽ の場合はそのまま

となり、○○にはユーザーIDを、

▲、△、▼、▽にはアクセスするページ条件が入ってくるため、

これらの値は固定値ではありません。

2007/12/27 10:45:31
id:y-kawaz No.2

y-kawaz回答回数1421ベストアンサー獲得回数2262007/12/27 11:10:58

ポイント23pt

サブドメイン部分が uid になるということですね。

では、以下でどうでしょうか?

RewriteEngine on
RewriteCond %{HTTP_HOST} !^hoge\.com$
RewriteCond %{HTTP_HOST} ^(.*)\.hoge\.com$
RewriteRule (.*) http://hoge.com/$1?uid=%1 [QSA]

ポイントは以下の通りです。

・最終着弾点である hoge.com の場合はRewriteされないよう最初のRewriteCondではじく

・RewriteRuleでマッチした括弧の値は $1,$2,$3... で再利用できる

・RewriteCondでマッチした括弧の値は %1,%2,%3... で再利用できる

・[QSA]を付けると ? の有無を理解して上手いこと元のクエリパラメータを足した形にしてもらえます

id:hello039

この方法で試してみたのですがリダイレクトされませんでした。

もう少し試行錯誤してみる予定です。

2007/12/27 11:56:39
id:nandedarou No.3

nandedarou回答回数230ベストアンサー獲得回数342007/12/27 15:59:42

ポイント22pt

※ 最後に書いた注意が大事ですので、必ず読んで下さい。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.hoge\.com$
RewriteRule ^$ http://hoge.com/?uid=%1 [QSA,L]
RewriteCond %{HTTP_HOST} ^(.*)\.hoge\.com$
RewriteRule ^bbs\.php$ http://hoge.com/bbs.php?uid=%1 [QSA,L]

※うまく行かない場合は、2、3、4、5行目の^の後に、/を入れてください。

 

●解説します。

2、3行目の機能

http://○○.hoge.com/ → http://hoge.com/?uid=○○

※QSAがある為、

http://○○.hoge.com/?▲=△&▼=▽ → http://hoge.com/?uid=○○&▲=△&▼=▽

となります。この変換が不要な場合は、3行目の[QSA,L]を[L]に修正して下さい。

 

4、5行目の機能

http://○○.hoge.com/bbs.php?▲=△&▼=▽ → http://hoge.com/bbs.php?uid=○○&▲=△&▼=▽

 

2行目、3行目で、hogeの前に.がある為、無い場合は変換しません、よって、

http://hoge.com/?uid=○○ の場合やhttp://hoge.com/bbs.php?uid=○○&▲=△&▼=▽ の場合はそのままです。

 

なお、ブラウザのURL欄も書き換わってしまう為、ユーザーに変換を行っていることがわかります。

質問の仕方から考えて、これで大丈夫なのだと思いますが、もしも、ブラウザのURL欄を書き換えずに内部的な変換のみ行いたいならば、お知らせ下さい。

その場合、回答受付中もコメントできるようにしていただければ、コメントにてお答えします。

 

●注意

この.htaccessファイルは、http://○○.hoge.com/というURLでアクセスできるディレクトリ(=フォルダ)におく必要があります。(アクセスできるか確かめるには、.htaccessには何もかかない状態で、自分で作ったindex.htmファイルを置いて、それが表示されるか確かめればよいでしょう。)

 

うまく行かない場合は、ドメイン(○○.hoge.com/)とディレクトリ(=フォルダ)との関連付けの設定を確認して下さい。○○が任意でもアクセスできるディレクトリがある必要があります。

id:tezcello No.4

tezcello回答回数460ベストアンサー獲得回数692007/12/27 16:22:28

ポイント22pt

> この方法で試してみたのですがリダイレクトされませんでした。

http://xxx.hoge.com/ のアクセス先(ex. /var/http/xxx/)と、http://hoge.com/ のアクセス先(ex. /var/http/main/)が同じであるなら、/var/http/main/.htaccess ファイルでリダイレクト処理ができると思います(上の回答者さんの内容については未検討です...)。

そうでなければ /var/http/xxx/.htaccess ファイルに記述しないと効果が無いはず。

http://xxx.hoge.com/ でのアクセスは、 /var/http/xxx/ 以下を見に行っているので、/var/http/main/.htaccess に何が書いてあるかは、知る由も無い...って事では無いですよね?

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません