回答編集履歴

3

B→A

2019/11/07 02:54

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -56,7 +56,7 @@
56
56
 
57
57
  (4)index.htmlで終わっていないので、篩い落とされます。
58
58
 
59
- (5)Bで篩い落とされているのですが、**index.htmlで終わっている**ので通過します。
59
+ (5)Aで篩い落とされているのですが、**index.htmlで終わっている**ので通過します。
60
60
 
61
61
 
62
62
 

2

処理の終了フラグを指定しないとこうなるみたいです

2019/11/07 02:54

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -1,6 +1,6 @@
1
1
  RewriteRuleは正規表現に基づくフィルタリングです。そしてOR条件フラグが付与されていないので、
2
2
 
3
- 現状だと順番に累積のAND条件によって篩い分けられます。ただし、最後の条件だけ通過すると、それは通ます。
3
+ 現状だと順番に累積のAND条件によって篩い分けられます。ただし、間が空いて、最後の条件だけ通過すると、それは通る現象が発生します。
4
4
 
5
5
 
6
6
 
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
- (1)(2)が通り、(3)がふるい落とされます。
33
+ 4)と(5)はAで篩い落とされているので、`!^www`により、wwwが付かない(1)(2)が通り、(3)がい落とされます。
34
34
 
35
35
 
36
36
 
@@ -44,15 +44,17 @@
44
44
 
45
45
  ```
46
46
 
47
+ ここでは(3)だけが篩い落とされた状態で、Aで篩い落とされたはずの(4)と(5)も対象となり、(1)(2)(4)(5)に対し、index.htmlが存在するかどうかでフィルタリングされます。どうしてこうなるかは、下のリンクを参照してください。
47
48
 
48
49
 
50
+
49
- (1)index.htmlで終わっていないので、篩い落とされます
51
+ (1)index.htmlで終わっていないので、篩い落とされます
50
52
 
51
53
  (2)Bを通過し、かつ**index.htmlで終わっている**ので通過します。
52
54
 
53
55
  (3)Bで篩い落とされています。
54
56
 
55
- (4)Aで篩い落とされています。
57
+ (4)index.html終わっていないので、篩い落とされます。
56
58
 
57
59
  (5)Bで篩い落とされているのですが、**index.htmlで終わっている**ので通過します。
58
60
 
@@ -62,7 +64,7 @@
62
64
 
63
65
 
64
66
 
65
- この状態を回避するためには、AND条件ではなくOR条件にしてあげるといいと思います。
67
+ この**どうしてこうなった**状態を回避するためには、AND条件ではなくOR条件にしてあげるといいと思います。
66
68
 
67
69
  ```
68
70
 
@@ -79,3 +81,7 @@
79
81
  ●OR条件の参考リンク↓
80
82
 
81
83
  [Apache RewriteCond の基礎知識](https://weblabo.oscasierra.net/apache-rewritecond-base/)
84
+
85
+ ●処理振り分けの参考ページ
86
+
87
+ [.htaccess に RewriteRule 書くときは、[L]フラグをつけてもそこで終了しないかもよ?って話。](https://qiita.com/ezaki/items/87c2dff8f7753ef048d2)

1

論法の修正

2019/11/07 02:50

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- 全部通ります
17
+ (1)(2)(3)が通り、(4)と(5)が篩い落とされます
18
18
 
19
19
 
20
20
 
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
- (1)(2)(4)が通り、一旦(3)と(5)がふるい落とされます。
33
+ (1)(2)が通り、(3)がふるい落とされます。
34
34
 
35
35
 
36
36
 
@@ -50,9 +50,9 @@
50
50
 
51
51
  (2)Bを通過し、かつ**index.htmlで終わっている**ので通過します。
52
52
 
53
- (3)Bで篩い落とされ、かつindex.htmlで終わっていないので篩い落とされます。
53
+ (3)Bで篩い落とされています。
54
54
 
55
- (4)index.html終わっていないので、篩い落とされます
55
+ (4)Aで篩い落とされています
56
56
 
57
57
  (5)Bで篩い落とされているのですが、**index.htmlで終わっている**ので通過します。
58
58