LoginSignup
3
3

More than 5 years have passed since last update.

FuelPHPでindex.phpやpublicを外せない時

Last updated at Posted at 2017-05-20

概要

通常のURLは下記のようになります。

http://example.jp/プロジェクト名/public/index.php/コントローラ名/アクション名/パラメータ

このURLから邪魔なpublicやindex.phpを消す方法は検索すると下記の方法が出てきます。

FuelPHPのURLからpublicを消す
【FuelPHP ver1.7.1】URLのindex.phpを取る

しかし、自分はこの手順を踏んでも何故か上手く行かず、訳がわからなくて死にました。

原因

なんとなく.htaccessが読み込まれていないような感じがしたので、試しに.htaccessに下記のようにエラーが起こりそうな文字を入れてみました。

<IfModule mod_rewrite.c>
  ...
  # Remove index.php from URL
  errorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
  RewriteCond %{HTTP:X-Requested-With}  !^XMLHttpRequest$
  RewriteCond %{THE_REQUEST}                ^[^/]*/index\.php [NC]
  RewriteRule ^index\.php(.*)$          $1 [R=301,NS,L]
  ...
</IfModule>

するとエラーが起きなかったので、やはり.htaccessが読み込まれていないと思いhttpd.confを確認してみました。しかし、httpd.confの設定では AllowOverride All になっていたので、問題はhttpd.confでは無かったです。

次に、 mod_rewrite.c が存在しないのでは無いかと思い、.htaccessの <IfModule mod_rewrite.c> の外にエラーが起こりそうな文字を入れてみました。

errorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
<IfModule mod_rewrite.c>
  ...
  # 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]
  ...
</IfModule>

すると予想通りエラーが起きたので、 mod_rewrite.c が存在しないとわかりました。

解決方法

httpd.confで mod_rewrite.c がコメントアウトされていたので、コメントアウトを外して対応しました。

#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
↓
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

まとめ

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3