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

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

ただいまの
回答率

90.34%

  • FuelPHP

    532questions

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

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

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 2,211

michii

score 2

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 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 15: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 15:59 編集

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

    キャンセル

  • 2015/10/08 17:21 編集

    はい。
    ドキュメントルート外にFuelPHPを設置し、Apacheドキュメントルートへはシンボリックリンクを貼っています。

    # cd /var/www
    # oil create hoge
    # cd /var/www/html ※ドキュメントルート
    # ln -s /var/www/hoge/public hoge

    キャンセル

  • 2015/10/08 18:23

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

    キャンセル

  • 2015/10/09 10:23

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

    キャンセル

  • 2015/10/09 11:10

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

    キャンセル

  • 2015/10/10 11: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>

    キャンセル

同じタグがついた質問を見る

  • FuelPHP

    532questions

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