teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2017/04/08 06:08

投稿

nullbot
nullbot

スコア910

answer CHANGED
@@ -10,4 +10,52 @@
10
10
  $route['(:num)'] = 'convert/detail/$1'
11
11
  ```
12
12
 
13
- とすれば期待した動作になるでしょうか?
13
+ とすれば期待した動作になるでしょうか?
14
+
15
+
16
+ # 2017/04/08 追記
17
+
18
+ ## ルーティングについて
19
+ 返答を見ている限りCodeIgniterのルーティングルールが理解できてないように思えます。
20
+ ルーティングの基本は
21
+ http://example.com/[コントローラクラス]/[コントローラメソッド]/[引数]
22
+ です。
23
+ この形になっていないものは
24
+
25
+ 1.サブディレクトリにある
26
+ 2.config/routes.phpでルーティングルールが記載されている
27
+ 3.indexの省略
28
+
29
+ しかありません。
30
+
31
+ http://hogehoge.com/
32
+ まずconfig/routes.phpで設定されるデフォルトコントーラーをみに行きます。
33
+ CodeIgniterではダウンロードした直後では
34
+
35
+
36
+ ```
37
+ $route['default_controller'] = 'welcome';
38
+ ```
39
+
40
+ と書かれているので
41
+ Welcome.phpが無いかを探しに行っていることになります。
42
+ またメソッド名が無い場合はindexメソッドを自動的に指定します。
43
+
44
+ したがってhttp://hogehoge.com/とアクセスした時にはwelcomeコントローラのindexメソッドが呼ばれています。
45
+
46
+ まずはどのコントローラーのどのメソッドで処理をしたいのかを明確にしてください。
47
+
48
+
49
+ ## mod_rewriteについて
50
+
51
+ ```
52
+ RewriteEngine On
53
+ RewriteCond %{REQUEST_URI} !/detail
54
+ RewriteRule ^(.*)$ /detail/$1 [R=301,L]
55
+ ```
56
+
57
+ http://www.hogehoge.com/322
58
+
59
+ http://www.hogehoge.com/detail/322
60
+ に転送できます。転送だけならこれで問題ありませんが、この先でCodeIgniterを動かしたいという話であれば転送せずにルーティングだけで考えた方がシンプルです。
61
+