回答編集履歴

4

コメントを受けて回答を修正

2016/11/18 10:30

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -1,16 +1,16 @@
1
- コメンを受けて修正
1
+ - https://example.com/aaa.html 場合 https://example.com/aaa/ へリダイレクする
2
2
 
3
- 以下どちらかでどうでしょうか?
4
-
5
- #どっからpublic_htmlを引張っきてるんだろう?httpd.confあたり何かやってるのか
3
+ - https://example.com/aaa でかつファイルが存在しない場合、https://example.com/aaa/ へリダイレクトする。よって https://example.com/not-exists.jpg ファイルが存在しい場合は、https://example.com/not-exists.jpg/ へリダイレクトします。
6
4
 
7
5
 
8
6
 
9
- コメント受けて追記:
7
+ - https://example.com/aaa/ の場合、https://example.com/aaa.html へURL書き換え行う。
10
8
 
11
- $HOME/public_html の公開設定がされていてこれが影響しているのかも
12
9
 
10
+
11
+
12
+
13
- リダイレクト先を http://からのFULL URLにしてが、これも最終的に /{user}/public_html にダイレれるなら実現方法は $HOME/public_html の公開を停止するしかなかも。
13
+ *ごちゃごちゃして回答を整理(履歴は編集から参照ください
14
14
 
15
15
 
16
16
 
@@ -18,13 +18,19 @@
18
18
 
19
19
  RewriteEngine On
20
20
 
21
+ # *.html 場合 */ へリダイレクト
22
+
23
+ RewriteCond %{REQUEST_URI} ^(.*)\.html$
24
+
25
+ RewriteRule .* https://%{SERVER_NAME}%1/ [L,R]
26
+
27
+
28
+
29
+ # /で終わってない場合 */ へリダイレクト
30
+
21
- #リクエストされURLのファイルディレクトリが存在しない
31
+ # だしファイルが存在しない場合のみ。ディレクトリが存在してもリダイレクトする。
22
32
 
23
33
  RewriteCond %{REQUEST_FILENAME} !-f
24
-
25
- RewriteCond %{REQUEST_FILENAME} !-d
26
-
27
- # かつ最後が/で終わってない場合は最後に/を付けてリダイレクト
28
34
 
29
35
  RewriteCond %{REQUEST_URI} !^.*/$
30
36
 
@@ -32,39 +38,11 @@
32
38
 
33
39
 
34
40
 
35
- RewriteCond %{REQUEST_FILENAME} !-f
36
-
37
- RewriteCond %{REQUEST_FILENAME} !-d
38
-
39
41
  # 最後が/で終わっている場合URL Rewrite で.htmlを付加
40
-
41
- RewriteRule ^([^/]+)/$ $1.html [L]
42
-
43
- ```
44
-
45
- または
46
-
47
- ```
48
-
49
- RewriteEngine On
50
-
51
- #リクエストされたURLのファイル・ディレクトリが存在しない
52
42
 
53
43
  RewriteCond %{REQUEST_FILENAME} !-f
54
44
 
55
45
  RewriteCond %{REQUEST_FILENAME} !-d
56
-
57
- # かつ最後が/で終わってない場合は最後に/を付けてリダイレクト
58
-
59
- RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI}/ [L,R]
60
-
61
-
62
-
63
- RewriteCond %{REQUEST_FILENAME} !-f
64
-
65
- RewriteCond %{REQUEST_FILENAME} !-d
66
-
67
- # 最後が/で終わっている場合URL Rewrite で.htmlを付加
68
46
 
69
47
  RewriteRule ^([^/]+)/$ $1.html [L]
70
48
 

3

コメントを受けて追記とコード修正

2016/11/18 10:30

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -3,6 +3,14 @@
3
3
  以下どちらかでどうでしょうか?
4
4
 
5
5
  #どっからpublic_htmlを引っ張ってきてるんだろう?httpd.confあたりで何かやってるのかな?
6
+
7
+
8
+
9
+ コメントを受けて追記:
10
+
11
+ $HOME/public_html の公開設定がされていてこれが影響しているのかも
12
+
13
+ リダイレクト先を http://からのFULL URLにしてみたが、これでも最終的に /{user}/public_html にリダイレクトされるなら実現方法は $HOME/public_html の公開を停止するしかないかも。
6
14
 
7
15
 
8
16
 
@@ -20,7 +28,7 @@
20
28
 
21
29
  RewriteCond %{REQUEST_URI} !^.*/$
22
30
 
23
- RewriteRule .* %{REQUEST_URI}/[R,L]
31
+ RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI}/ [L,R]
24
32
 
25
33
 
26
34
 
@@ -48,7 +56,7 @@
48
56
 
49
57
  # かつ最後が/で終わってない場合は最後に/を付けてリダイレクト
50
58
 
51
- RewriteRule .*[^/]$ %{REQUEST_URI}/[R,L]
59
+ RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI}/ [L,R]
52
60
 
53
61
 
54
62
 

2

コメントを受けて修正。

2016/11/18 09:18

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -1,3 +1,11 @@
1
+ コメントを受けて修正。
2
+
3
+ 以下どちらかでどうでしょうか?
4
+
5
+ #どっからpublic_htmlを引っ張ってきてるんだろう?httpd.confあたりで何かやってるのかな?
6
+
7
+
8
+
1
9
  ```
2
10
 
3
11
  RewriteEngine On
@@ -10,7 +18,37 @@
10
18
 
11
19
  # かつ最後が/で終わってない場合は最後に/を付けてリダイレクト
12
20
 
21
+ RewriteCond %{REQUEST_URI} !^.*/$
22
+
23
+ RewriteRule .* %{REQUEST_URI}/[R,L]
24
+
25
+
26
+
27
+ RewriteCond %{REQUEST_FILENAME} !-f
28
+
29
+ RewriteCond %{REQUEST_FILENAME} !-d
30
+
31
+ # 最後が/で終わっている場合URL Rewrite で.htmlを付加
32
+
13
- RewriteRule ^([^/]+)$ $1/ [R,L]
33
+ RewriteRule ^([^/]+)/$ $1.html [L]
34
+
35
+ ```
36
+
37
+ または
38
+
39
+ ```
40
+
41
+ RewriteEngine On
42
+
43
+ #リクエストされたURLのファイル・ディレクトリが存在しない
44
+
45
+ RewriteCond %{REQUEST_FILENAME} !-f
46
+
47
+ RewriteCond %{REQUEST_FILENAME} !-d
48
+
49
+ # かつ最後が/で終わってない場合は最後に/を付けてリダイレクト
50
+
51
+ RewriteRule .*[^/]$ %{REQUEST_URI}/[R,L]
14
52
 
15
53
 
16
54
 
@@ -25,7 +63,3 @@
25
63
  ```
26
64
 
27
65
 
28
-
29
- ※RewriteRuleが間違ってたので修正しました。
30
-
31
-

1

RewriteRuleが間違ってたので修正

2016/11/18 08:09

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  # かつ最後が/で終わってない場合は最後に/を付けてリダイレクト
12
12
 
13
- RewriteRule ^([^/]+)?$ $1/ [R,L]
13
+ RewriteRule ^([^/]+)$ $1/ [R,L]
14
14
 
15
15
 
16
16
 
@@ -18,8 +18,14 @@
18
18
 
19
19
  RewriteCond %{REQUEST_FILENAME} !-d
20
20
 
21
+ # 最後が/で終わっている場合URL Rewrite で.htmlを付加
22
+
21
- RewriteRule ^([^/]+)/?$ $1.html [L]
23
+ RewriteRule ^([^/]+)/$ $1.html [L]
24
+
25
+ ```
22
26
 
23
27
 
24
28
 
25
- ```
29
+ ※RewriteRuleが間違ってたので修正しました。
30
+
31
+