- PR -

(ユーザ名)/(ファイル) を ~(ユーザ名)/(ファイル) のへURLを変更するにはどうすればいいでしょうか?

投稿者投稿内容
volvic
会議室デビュー日: 2006/08/20
投稿数: 17
投稿日時: 2006-08-21 12:22
前にも投稿させていただいたものです。
Apatch Rewriteモジュールについて追加質問です。

http://aaa/(ユーザ名)/(ファイル)

http://aaa/~(ユーザ名)/(ファイル)

とアクセスできるようにしたいのですが、
RewriteRuleはどう設定すればよいでしょうか?


[ メッセージ編集済み 編集者: volvic 編集日時 2006-08-21 12:23 ]

[ メッセージ編集済み 編集者: volvic 編集日時 2006-08-21 12:25 ]
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2006-08-21 12:28
こんちは

RewriteRule ^(\w+)/(\w+)$ ~$1/$2

な感じでできないですか?
今試せる環境がないのですみません

[ メッセージ編集済み 編集者: 未記入 編集日時 2006-08-21 17:02 ]
SHR
ベテラン
会議室デビュー日: 2006/06/15
投稿数: 99
投稿日時: 2006-08-21 14:44
こんな感じでしょうか。

RewriteRule ^/(\w+)/(.+)$ http://aaa/~$1/$2 [P,L]

ReWrite先がaliasだったりhomeだったりする場合、[P]使った方が確実です。

\w+だと、拡張子の区切りに使う.とかが対象になりませんので。
階層下の階層を対象にしないのであれば、適宜置き換えて下さい。
※ユーザ名も、_等の記号を使う場合、置き換えないといけませんし…。
volvic
会議室デビュー日: 2006/08/20
投稿数: 17
投稿日時: 2006-08-21 14:45
回答ありがとうございます!

回答いただいた設定ではNot Foundとなってしまいました。
http://japache.infoscience.co.jp/japanese/manual/mod/mod_rewrite.html#RewriteRule
の最後に書かれてあるのですが、map.txtの中身が何なのかからなかったです。
map.txtには何を書けばよいのでしょうか?
SHR
ベテラン
会議室デビュー日: 2006/06/15
投稿数: 99
投稿日時: 2006-08-21 15:06
>回答いただいた設定ではNot Foundとなってしまいました。
どのようなURLを叩いたか書いて下さい。
先程書いた例は、ユーザ名やファイル名等に条件がある為、
入力したURLによってはReWriteされない可能性があります。

>map.txtには何を書けばよいのでしょうか?
RewriteMapを使わないなら不要です。


とりあえず、
RewriteLog "logs/rewrite_log" #適宜パス等は変更して下さい
RewriteLogLevel 2
でReWriteされているか、またどのようにReWriteされたかログで見て下さい。
volvic
会議室デビュー日: 2006/08/20
投稿数: 17
投稿日時: 2006-08-21 15:25
SHRさん、回答ありがとうございます。

ログには
192.168.23.175 - - [21/Aug/2006:15:21:42 +0900] [aaa.jp/sid#9b09734][rid#9b122e4/initial] (2) init rewrite engine with requested uri /user/aaa.html
192.168.23.175 - - [21/Aug/2006:15:21:42 +0900] [aaa.jp/sid#9b09734][rid#9b122e4/initial] (1) pass through /user/aaa.html

と書き出されました。
(サーバ名は"aaa"、ユーザ名は"user"となおしました。)

/~user/aaa.html
は作成したので、見つからないことはないと思うのですが、、
SHR
ベテラン
会議室デビュー日: 2006/06/15
投稿数: 99
投稿日時: 2006-08-21 16:14
> pass through /user/aaa.html
と、書かれています通り、記載されたRewriteRuleに/user/aaa.htmlが引っかかっていないようです。

こちらで試したところ、
#ReWriteRule
> RewriteRule ^/(\w+)/(.+)$ http://aaa/~$1/$2 [P,L]

#ReWriteLog(一部削除)
> (2) init rewrite engine with requested uri /user/aaa.html
> (2) rewrite '/user/aaa.html' -> 'http://aaa/~user/aaa.html'
> (2) forcing proxy-throughput with http://aaa/~user/aaa.html
> (1) go-ahead with proxy request proxy:http://aaa/~user/aaa.html [OK]
上記のように意図した通りになっております。
後は環境差異でしょうか。
(Apache2.2.3 --enable-rewrite)
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2006-08-21 17:01
/~user/aaa.html を作成したとありますがどこに作成したのでしょうか?

通常は /home/user/public_html/aaa.html とかになると思いますが、
まさか /home/user/aaa.html とかに置いたりしていないですよね?

その前にRewriteRuleに引っ掛っていないのかも知れませんけど...

スキルアップ/キャリアアップ(JOB@IT)