- PR -

Apache / に対する RewiteRule

1
投稿者投稿内容
Jumpin'' Jack Flash
大ベテラン
会議室デビュー日: 2006/01/24
投稿数: 198
投稿日時: 2006-06-21 13:52
/* へのアクセスを /<directory>/* になるように RewriteRule を設定しました。
----
RewriteRule ^/(.*) /<directory>/$1 [PT]
----

http://<myhostname>/index.html へアクセスすると,
@ /index.html -> /<directory>/index.html の rewrite
が発生し、うまくいきます。
----
xxx.xxx.xxx.xxx - - [21/Jun/2006:13:20:05 +0900] [<myhostname>/sid#93f8168][rid#9561228/initial] (2) init rewrite engine with requested uri /index.html
xxx.xxx.xxx.xxx - - [21/Jun/2006:13:20:05 +0900] [<myhostname>/sid#93f8168][rid#9561228/initial] (3) applying pattern '^/(.*)' to uri '/index.html'
xxx.xxx.xxx.xxx - - [21/Jun/2006:13:20:05 +0900] [<myhostname>/sid#93f8168][rid#9561228/initial] (2) rewrite /index.html -> /<directory>/index.html
xxx.xxx.xxx.xxx - - [21/Jun/2006:13:20:05 +0900] [<myhostname>/sid#93f8168][rid#9561228/initial] (2) forcing '/<directory>/index.html' to get passed through to next API URI-to-filename handler
----

しかし、

http://<myhostname>/ へアクセスすると、
@ / -> /<directory>/ の rewrite
その後、/<directory>/index.html へ リダイレクトし、
A /<directory>/index.html -> /<directory>/<directory>/index.html の rewrite
が発生し、HTTP Status 404になってしまいます。
----
xxx.xxx.xxx.xxx - - [21/Jun/2006:13:25:19 +0900] [<myhostname>/sid#93f8168][rid#9561228/initial] (2) init rewrite engine with requested uri /
xxx.xxx.xxx.xxx - - [21/Jun/2006:13:25:19 +0900] [<myhostname>/sid#93f8168][rid#9561228/initial] (3) applying pattern '^/(.*)' to uri '/'
xxx.xxx.xxx.xxx - - [21/Jun/2006:13:25:19 +0900] [<myhostname>/sid#93f8168][rid#9561228/initial] (2) rewrite / -> /<directory>/
xxx.xxx.xxx.xxx - - [21/Jun/2006:13:25:19 +0900] [<myhostname>/sid#93f8168][rid#9561228/initial] (2) forcing '/<directory>/' to get passed through to next API URI-to-filename handler
xxx.xxx.xxx.xxx - - [21/Jun/2006:13:25:19 +0900] [<myhostname>/sid#93f8168][rid#956d258/initial] (2) init rewrite engine with requested uri /<directory>/index.html
xxx.xxx.xxx.xxx - - [21/Jun/2006:13:25:19 +0900] [<myhostname>/sid#93f8168][rid#956d258/initial] (3) applying pattern '^/(.*)' to uri '/<directory>/index.html'
xxx.xxx.xxx.xxx - - [21/Jun/2006:13:25:19 +0900] [<myhostname>/sid#93f8168][rid#956d258/initial] (2) rewrite /<directory>/index.html -> /<directory>/<directory>/index.html
xxx.xxx.xxx.xxx - - [21/Jun/2006:13:25:19 +0900] [<myhostname>/sid#93f8168][rid#956d258/initial] (2) forcing '/<directory>/<directory>/index.html' to get passed through to next API URI-to-filename handler
----

Aのrewrite を回避する方法を教えてください。

よろしくお願いいたします。


[ メッセージ編集済み 編集者: Jumpin' Jack Flash 編集日時 2006-06-21 13:53 ]
Jumpin'' Jack Flash
大ベテラン
会議室デビュー日: 2006/01/24
投稿数: 198
投稿日時: 2006-07-06 12:02
自己レスです。

----
RewriteRule ^/<directory>/(.*) /$1 [R]
RewriteRule ^/(.*) /<directory>/$1 [PT]
----
で、いけました。
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2006-07-06 14:06
こんにちは
解決済みのようですが

RewriteCond %{REQUEST_URI} !^/<directory> <<除外条件
RewriteRule ^/(.*)$ /<directory>/$1

RewriteCondでRewriteRuleから除外すればいいのでは?
Jumpin'' Jack Flash
大ベテラン
会議室デビュー日: 2006/01/24
投稿数: 198
投稿日時: 2006-07-06 15:01
コメントありがとうございます。

このように設定しました。
----
RewriteCond %{REQUEST_URI} !^/<directory>/
RewriteRule ^/(.*)$ /<directory>/$1 [PT]
----
RewriteCondの最後に"/"を付けた。
RewriteRuleの最後に[PT]を付けないと遷移しないようです。

で、概ねOKと思われましたが、
http://<myhostname>/http://<myhostname>/<directory>/index.html
になってしまいます。
1

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