QA@IT
«回答へ戻る

5599
 というように書き換えればいけるかもしれません(サーブレットに飛ばすときにドキュメントへのパスはどうするかは書いてないのでわかりません)。
 
 あと `!www.domain.jp`だと、`sometextwww.domain.jp`もはじかれそうな気がします。
+
+----
+
+**追記**
+
+```
+RewriteRule (.*) %{HTTP_HOST}$1 [C]
+RewriteRule ^([^.]+).domain.jp http://domain.jp/apl/servlet?para=$1 [L]
+```
+
+この部分ですが、
+たとえば `http://sub.domain.jp/abc/efg` とアクセスしたとき、
+
+`/abc/efg`の部分が以下の様に変化して動いています
+
+```
+# RewriteRule (.*) %{HTTP_HOST}$1 [C] により
+sub.domain.jp/abc/efg
+# これはつまり、http://sub.domain.jp/sub.domain.jp/abc/efg とアクセスされたことにしている。
+# 二回ホスト名があるのは間違いではありません。二回目のはパスです。
+
+# RewriteRule ^([^.]+).domain.jp http://domain.jp/apl/servlet?para=$1 [L] により
+sub.domain.jp/abc/efg (ホスト名ではなくパス) が評価され、 ^([^.]+) の部分つまり $1になる部分が sub にマッチする。
+
+最終的に
+http://domain.jp/apl/servlet?para=sub
+になる。
+```
+
+これは認識されてますか?公開前であればまずは動けばいいと思いますので、一旦うまくいったらまた整理されるといいかもしれません。
+
+あと書きながら気付いたんですけど
+`^([^.]+).domain.jp` ではなく `^([^.]+)\.domain\.jp`が正しいですね。

動いていない理由の一つとしては

RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=$1 [L]

^/(.*) の部分が $1にしたい内容になっていないからですね。

^/(.*) の箇所は http://sub.domain.jp/ abc/efg/hij* の太字の部分に対するパターンマッチを指定する場所です。

/で始めるか /なしで始めるかはVirtualHostかどうかだったと思いますが、いずれにしてもホスト名はここでは取れなかったと思います。

他にもやりようはあるかもしれませんし検証もできてませんが、別のルールで環境変数に逃がしてそれを

RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=${ENV:myEnvName} [L]

というように書き換えればいけるかもしれません(サーブレットに飛ばすときにドキュメントへのパスはどうするかは書いてないのでわかりません)。

あと !www.domain.jpだと、sometextwww.domain.jpもはじかれそうな気がします。


追記

RewriteRule (.*) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+).domain.jp http://domain.jp/apl/servlet?para=$1 [L]

この部分ですが、
たとえば http://sub.domain.jp/abc/efg とアクセスしたとき、

/abc/efgの部分が以下の様に変化して動いています

# RewriteRule (.*) %{HTTP_HOST}$1 [C] により
sub.domain.jp/abc/efg
# これはつまり、http://sub.domain.jp/sub.domain.jp/abc/efg とアクセスされたことにしている。
# 二回ホスト名があるのは間違いではありません。二回目のはパスです。

# RewriteRule ^([^.]+).domain.jp http://domain.jp/apl/servlet?para=$1 [L] により
sub.domain.jp/abc/efg (ホスト名ではなくパス) が評価され、 ^([^.]+) の部分つまり $1になる部分が sub にマッチする。

最終的に
http://domain.jp/apl/servlet?para=sub
になる。

これは認識されてますか?公開前であればまずは動けばいいと思いますので、一旦うまくいったらまた整理されるといいかもしれません。

あと書きながら気付いたんですけど
^([^.]+).domain.jp ではなく ^([^.]+)\.domain\.jpが正しいですね。

動いていない理由の一つとしては

```
RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=$1 [L]
```

の `^/(.*)` の部分が $1にしたい内容になっていないからですね。

`^/(.*)` の箇所は http://sub.domain.jp/ **abc/efg/hij*** の太字の部分に対するパターンマッチを指定する場所です。

/で始めるか /なしで始めるかはVirtualHostかどうかだったと思いますが、いずれにしてもホスト名はここでは取れなかったと思います。

他にもやりようはあるかもしれませんし検証もできてませんが、別のルールで環境変数に逃がしてそれを   

```
RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=${ENV:myEnvName} [L]
```

というように書き換えればいけるかもしれません(サーブレットに飛ばすときにドキュメントへのパスはどうするかは書いてないのでわかりません)。

あと `!www.domain.jp`だと、`sometextwww.domain.jp`もはじかれそうな気がします。

----

**追記**

```
RewriteRule (.*) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+).domain.jp http://domain.jp/apl/servlet?para=$1 [L]
```

この部分ですが、
たとえば `http://sub.domain.jp/abc/efg` とアクセスしたとき、

`/abc/efg`の部分が以下の様に変化して動いています

```
# RewriteRule (.*) %{HTTP_HOST}$1 [C] により
sub.domain.jp/abc/efg
# これはつまり、http://sub.domain.jp/sub.domain.jp/abc/efg とアクセスされたことにしている。
# 二回ホスト名があるのは間違いではありません。二回目のはパスです。

# RewriteRule ^([^.]+).domain.jp http://domain.jp/apl/servlet?para=$1 [L] により
sub.domain.jp/abc/efg (ホスト名ではなくパス) が評価され、 ^([^.]+) の部分つまり $1になる部分が sub にマッチする。

最終的に
http://domain.jp/apl/servlet?para=sub
になる。
```

これは認識されてますか?公開前であればまずは動けばいいと思いますので、一旦うまくいったらまた整理されるといいかもしれません。

あと書きながら気付いたんですけど
`^([^.]+).domain.jp` ではなく `^([^.]+)\.domain\.jp`が正しいですね。

5599
 ```
 
 というように書き換えればいけるかもしれません(サーブレットに飛ばすときにドキュメントへのパスはどうするかは書いてないのでわかりません)。
+
+あと `!www.domain.jp`だと、`sometextwww.domain.jp`もはじかれそうな気がします。

動いていない理由の一つとしては

RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=$1 [L]

^/(.*) の部分が $1にしたい内容になっていないからですね。

^/(.*) の箇所は http://sub.domain.jp/ abc/efg/hij* の太字の部分に対するパターンマッチを指定する場所です。

/で始めるか /なしで始めるかはVirtualHostかどうかだったと思いますが、いずれにしてもホスト名はここでは取れなかったと思います。

他にもやりようはあるかもしれませんし検証もできてませんが、別のルールで環境変数に逃がしてそれを

RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=${ENV:myEnvName} [L]

というように書き換えればいけるかもしれません(サーブレットに飛ばすときにドキュメントへのパスはどうするかは書いてないのでわかりません)。

あと !www.domain.jpだと、sometextwww.domain.jpもはじかれそうな気がします。

動いていない理由の一つとしては

```
RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=$1 [L]
```

の `^/(.*)` の部分が $1にしたい内容になっていないからですね。

`^/(.*)` の箇所は http://sub.domain.jp/ **abc/efg/hij*** の太字の部分に対するパターンマッチを指定する場所です。

/で始めるか /なしで始めるかはVirtualHostかどうかだったと思いますが、いずれにしてもホスト名はここでは取れなかったと思います。

他にもやりようはあるかもしれませんし検証もできてませんが、別のルールで環境変数に逃がしてそれを   

```
RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=${ENV:myEnvName} [L]
```

というように書き換えればいけるかもしれません(サーブレットに飛ばすときにドキュメントへのパスはどうするかは書いてないのでわかりません)。

あと `!www.domain.jp`だと、`sometextwww.domain.jp`もはじかれそうな気がします。

5599
-動いていない理由としては
+動いていない理由の一つとしては
 
 ```
 RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=$1 [L]

動いていない理由の一つとしては

RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=$1 [L]

^/(.*) の部分が $1にしたい内容になっていないからですね。

^/(.*) の箇所は http://sub.domain.jp/ abc/efg/hij* の太字の部分に対するパターンマッチを指定する場所です。

/で始めるか /なしで始めるかはVirtualHostかどうかだったと思いますが、いずれにしてもホスト名はここでは取れなかったと思います。

他にもやりようはあるかもしれませんし検証もできてませんが、別のルールで環境変数に逃がしてそれを

RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=${ENV:myEnvName} [L]

というように書き換えればいけるかもしれません(サーブレットに飛ばすときにドキュメントへのパスはどうするかは書いてないのでわかりません)。

動いていない理由の一つとしては

```
RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=$1 [L]
```

の `^/(.*)` の部分が $1にしたい内容になっていないからですね。

`^/(.*)` の箇所は http://sub.domain.jp/ **abc/efg/hij*** の太字の部分に対するパターンマッチを指定する場所です。

/で始めるか /なしで始めるかはVirtualHostかどうかだったと思いますが、いずれにしてもホスト名はここでは取れなかったと思います。

他にもやりようはあるかもしれませんし検証もできてませんが、別のルールで環境変数に逃がしてそれを   

```
RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=${ENV:myEnvName} [L]
```

というように書き換えればいけるかもしれません(サーブレットに飛ばすときにドキュメントへのパスはどうするかは書いてないのでわかりません)。

回答を投稿

動いていない理由としては

RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=$1 [L]

^/(.*) の部分が $1にしたい内容になっていないからですね。

^/(.*) の箇所は http://sub.domain.jp/ abc/efg/hij* の太字の部分に対するパターンマッチを指定する場所です。

/で始めるか /なしで始めるかはVirtualHostかどうかだったと思いますが、いずれにしてもホスト名はここでは取れなかったと思います。

他にもやりようはあるかもしれませんし検証もできてませんが、別のルールで環境変数に逃がしてそれを

RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=${ENV:myEnvName} [L]

というように書き換えればいけるかもしれません(サーブレットに飛ばすときにドキュメントへのパスはどうするかは書いてないのでわかりません)。

動いていない理由としては

```
RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=$1 [L]
```

の `^/(.*)` の部分が $1にしたい内容になっていないからですね。

`^/(.*)` の箇所は http://sub.domain.jp/ **abc/efg/hij*** の太字の部分に対するパターンマッチを指定する場所です。

/で始めるか /なしで始めるかはVirtualHostかどうかだったと思いますが、いずれにしてもホスト名はここでは取れなかったと思います。

他にもやりようはあるかもしれませんし検証もできてませんが、別のルールで環境変数に逃がしてそれを   

```
RewriteRule ^/(.*) ajp://localhost:8009/apl/servlet?para=${ENV:myEnvName} [L]
```

というように書き換えればいけるかもしれません(サーブレットに飛ばすときにドキュメントへのパスはどうするかは書いてないのでわかりません)。