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

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

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

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Q&A

1回答

5767閲覧

FuelPHPのURLのindex.php省略について

michii

総合スコア8

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

0グッド

0クリップ

投稿2015/10/08 05:26

FuelPHPを勉強中です。
URLよりindex.phpを省略したいのですが、「404 Not Found」エラーとなってしまいます。
アドバイスよろしくお願いいたします。
http://localhost/hoge/index.php/check
×http://localhost/hoge/check

index.phpなしでアクセスしたい

【コントローラ】fuel/app/classes/controller/check.php

<?php class Controller_Check extends Controller { public function action_index() { echo '<pre>'; echo 'FuelPHP version: ' . Fuel::VERSION . "\n"; echo ' locate: ' . setlocale(LC_ALL, '0') . "\n"; echo ' date: ' . Date::forge()->format('mysql') . "\n"; echo 'default_charset: ' . ini_get('default_charset') . "\n"; echo '</pre>'; } } ?>

FuelPHPのプロジェクト(hoge)はドキュメントルート外に配置し、Apacheからhogeにアクセスできるようシンボリックリンクを貼っています。


  • CentOS 6.4

  • Apache 2.4.4

  • PHP 5.6

  • FuelPHP 1.7.3

参考本:鈴木憲治著:はじめてのフレームワークとしてのFuelPHP

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

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

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

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

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

guest

回答1

0

index.phpが置いてある箇所に、「.htaccess」を下記のように記述します。

RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /hoge/index.php/$1 [L]

参考:CodeIgniterでURLからindex.phpを除去する | Time to live forever
http://unsolublesugar.com/20140906/151747/

うちで実際に使っている .htaccess も参考に掲載します。

# Multiple Environment config, set this to development, staging or production # SetEnv FUEL_ENV production <IfModule mod_rewrite.c> RewriteEngine on # NOTICE: If you get a 404 play with combinations of the following commented out lines #AllowOverride All #RewriteBase /wherever/fuel/is # Make sure directory listing is disabled Options +FollowSymLinks -Indexes # Restrict your site to only one domain # !important USE ONLY ONE OPTION # Option 1: To rewrite "www.domain.com -> domain.com" uncomment the following lines. #RewriteCond %{HTTPS} !=on #RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] #RewriteRule ^(.*)$ http://%1/$1 [R=301,L] # Option 2: To rewrite "domain.com -> www.domain.com" uncomment the following lines. #RewriteCond %{HTTPS} !=on #RewriteCond %{HTTP_HOST} !^www\..+$ [NC] #RewriteCond %{HTTP_HOST} (.+)$ [NC] #RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L] # Remove index.php from URL #RewriteCond %{HTTP:X-Requested-With} !^XMLHttpRequest$ #RewriteCond %{THE_REQUEST} ^[^/]*/index\.php [NC] #RewriteRule ^index\.php(.*)$ $1 [R=301,NS,L] # make HTTP Basic Authentication work on php5-fcgi installs <IfModule mod_fcgid.c> RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] </IfModule> # Send request via index.php if not a real file or directory RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # deal with php5-cgi first <IfModule mod_fcgid.c> RewriteRule ^(.*)$ index.php?/$1 [QSA,L] </IfModule> <IfModule !mod_fcgid.c> # for normal Apache installations <IfModule mod_php5.c> RewriteRule ^(.*)$ index.php/$1 [L] </IfModule> # for Apache FGCI installations <IfModule !mod_php5.c> RewriteRule ^(.*)$ index.php?/$1 [QSA,L] </IfModule> </IfModule> </IfModule>

投稿2015/10/08 05:50

編集2015/10/08 09:22
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

michii

2015/10/08 06:46

回答ありがとうございます。 http://qiita.com/kiimiiis/items/507d293976fe87e7f0b9 も参考にして、public/.htaccessをRewriteRuleを設定しましたが404エラーのままです。httpd.confが原因でしょうか。。。 [public/.htaccess] RewriteEngine on # Remove index.php from URL RewriteCond %{HTTP:X-Requested-With} !^XMLHttpRequest$ RewriteCond %{THE_REQUEST} ^[^/]*/index\.php [NC] RewriteRule ^index\.php(.*)$ $1 [R=301,NS,L] [httpd.conf] <Directory /> Options -Indexes +FollowSymLinks AllowOverride All Require all denied </Directory>
退会済みユーザー

退会済みユーザー

2015/10/08 07:00 編集

FuelPHPをどのように設置していますか? fuelphp/public/ をシンボリックリンクでweb公開ディレクトリにマッピングする手順だったように思いますが。
michii

2015/10/08 08:21 編集

はい。 ドキュメントルート外にFuelPHPを設置し、Apacheドキュメントルートへはシンボリックリンクを貼っています。 # cd /var/www # oil create hoge # cd /var/www/html ※ドキュメントルート # ln -s /var/www/hoge/public hoge
退会済みユーザー

退会済みユーザー

2015/10/08 09:23

うちのpublicディレクトリの.htaccessも掲載してみましたので、参考にしていただければ。
michii

2015/10/09 01:23

.htaccessの掲載ありがとうございます。 Remove index.php from URLの3行を有効にした以外の違いはありませんでした。 となるとやはり、.htaccessが有効になっていない可能性が高いですかね。 httpd.confを見直してみます。ありがとうございました。
takotakot

2015/10/09 02:10

実運用中でなければ、httpd.conf に Rewrite の設定を書いてみて動作状況を見てみる手がありますね(切り分け)。
michii

2015/10/10 02:41

httpd.confのDirectoryに直接書いてみました。 試しにドキュメントルートのindex.phpにアクセスしたらgoogleページが表示されるようにしたつもりなんですが、うまくいきません。 環境がIaaSで特殊と言えば特殊なんですが、そもそものRewriteRuleの書き方が間違っているのでしょうか。。。 DocumentRoot "/var/www/html" LoadModule rewrite_module modules/mod_rewrite.so <Directory "/var/www/html"> RewriteEngine On RewriteRule ^/index.php$ https://www.google.co.jp/ [R=301,L] </Directory>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問