質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

Q&A

解決済

1回答

3072閲覧

CodeIgniterのTOPページ(Welcome.php)でパラメータでを設定しても動作しない

hidepon

総合スコア206

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

0グッド

0クリップ

投稿2017/04/05 03:08

編集2017/04/05 08:33

CodeIgniter 3.X系でシステム構築を行おうとしています。
WordPress から移行処理を行おうとしていますが、
WordPressのURL構造がこれから開発を行っているサイトと異なるため
処理を加える必要が生じています。

たとえば、WordPressで開発したサイトが
http://www.hogehoge.com/322 であった際に
これを
新規開発のサイトで変換を行う必要があります。(外部リンクとして多数ありそれを大事にしたいでの)
ドメイン移行後の新サイトで
http://www.hogehoge.com/322 とパラメータ共通でアクセスを受けた際に
http://www.hogehoge.com/detail/322
というページに飛ばしたいです。
この時

$route['welcome/(:num)']='detail/$1';

としましたが、
$routeの部分が処理できずに「404 Not Found」 になってしまいます。
このような操作は出来ないのでしょうか?

http://www.hogehoge.com/322
というTOPページにパラメータを加えた際に
http://www.hogehoge.com/detail/322
というページに飛ばす方法があればご教授頂ければと思います。
このようなことができれば非常に助かります。

ご指摘を受けて.htaccess を追記しましたが、
上手くいきません。

RewriteEngine On RewriteBase / RewriteCond $1 !^(index\.php|image|images|img|css|js|robots\.txt) RewriteRule ^(.+)$ /index.php?/$1 [L] RewriteCond %{SERVER_PORT} 80 RewriteRule ^http://www.hogehoge.com/[0-9]$ http://www.hogehoge.com/detail/

どこか間違っているでしょうか????????????

詳しい方がいらっしゃったら教えてください。
宜しくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

http://www.hogehoge.com/322 とパラメータ共通でアクセスを受けた際に
http://www.hogehoge.com/detail/322
というページに飛ばしたいです。

飛ばしたいだけなら.htaccessにrewriteルールを書けば良いと思いますが、何かチェックしてからリダイレクトしたいってことですよね?

Convert.phpにCI_Controllerを継承したConvertクラスを作ってさらにdetailメソッドを作り、

$route['(:num)'] = 'convert/detail/$1'

とすれば期待した動作になるでしょうか?

2017/04/08 追記

ルーティングについて

返答を見ている限りCodeIgniterのルーティングルールが理解できてないように思えます。
ルーティングの基本は
http://example.com/[コントローラクラス]/[コントローラメソッド]/[引数]
です。
この形になっていないものは

1.サブディレクトリにある
2.config/routes.phpでルーティングルールが記載されている
3.indexの省略

しかありません。

http://hogehoge.com/
まずconfig/routes.phpで設定されるデフォルトコントーラーをみに行きます。
CodeIgniterではダウンロードした直後では

$route['default_controller'] = 'welcome';

と書かれているので
Welcome.phpが無いかを探しに行っていることになります。
またメソッド名が無い場合はindexメソッドを自動的に指定します。

したがってhttp://hogehoge.com/とアクセスした時にはwelcomeコントローラのindexメソッドが呼ばれています。

まずはどのコントローラーのどのメソッドで処理をしたいのかを明確にしてください。

mod_rewriteについて

RewriteEngine On RewriteCond %{REQUEST_URI} !/detail RewriteRule ^(.*)$ /detail/$1 [R=301,L]


http://www.hogehoge.com/322

http://www.hogehoge.com/detail/322
に転送できます。転送だけならこれで問題ありませんが、この先でCodeIgniterを動かしたいという話であれば転送せずにルーティングだけで考えた方がシンプルです。

投稿2017/04/05 04:20

編集2017/04/08 06:08
nullbot

総合スコア910

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hidepon

2017/04/05 04:57

RewriteEngine On RewriteBase / RewriteCond $1 !^(index\.php|image|images|img|css|js|robots\.txt) RewriteRule ^(.+)$ /index.php?/$1 [L] RewriteRule http://hogehoge.com/$1 http://hogehoge.com/convert/$1[R=301,L] #RewriteCond %{HTTPS} off #RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] という形で書いてみましたが、うまくいきません。 (URL部分は暫定です) 第一目標は http://hogehoge.com/342 としたときに  http://hogehoge.com/convert/342 というページに飛ばしたいです。 宜しくお願いいたします。
hidepon

2017/04/05 06:17

ご返答ありがとうございました。 RewriteEngine On RewriteBase / RewriteCond $1 !^(index\.php|image|images|img|css|js|robots\.txt) RewriteRule ^(.+)$ /index.php?/$1 [L] RewriteCond %{SERVER_PORT} 80 RewriteRule ^http://www.hogehoge.com/[0-9]$ http://www.hogehoge.com/detail/ としてみましたが、うまくいきません。どこか間違っているでしょうか?
hidepon

2017/04/08 03:28

ご提示頂いた内容を実行しましたが、うまくいきません。 普通に $route['welcome/(:num)'] = 'welcome/$1'; としても、404で処理されてしまいます。 どのようにすれば良いでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問