質問: http://mg1986jp.xsrv.jp/index.php/welcome/hello/name fuelphpを入れていますがこのindex.phpは fuelphp/public/index.phpではなく mg1986jp.xsrv.jp/public_html/**index.php** -> ../lib/fuelphp/public/ のindex.phpです。 fuelphpにもindex.phpをURLに表示させるかどうかの設定がありますがそれを有効にすると下記のようになります。 http://mg1986jp.xsrv.jp/index.php/index.php/welcome/hello/name 大変カオスなことになるのでfuelphpではindex.phpはURLに含めない設定にしているのですが、問題はapache側の設定(.htaccess)で、mod_rewriteについて調べて試行錯誤しているます。 mod_rewriteについて これを参考にどこかしらのサイトに飛ばすぐらいのことはできるようになったのですが、 http://mg1986jp.xsrv.jp/index.php/welcome/hello/name のURLの文中に含まれるindex.phpを書き換える方法といいますか、この場合はどうすればいいのかがわかりません。 [mod_rewrite] index.htmlを省略したURLにリダイレクトする.htaccess ``` # URL から index.html と index.php を無くす mod_rewriteモジュール RewriteEngine on # アクセスしたファイル名が index.html または index.php かどうかをチェック RewriteCond %{REQUEST_FILENAME} index\.(html|php) # ルートディレクトリ用 RewriteRule ^index\.(html|php)$ / [R=301,L] # サブディレクトリ用 RewriteRule ^(.*)/index\.(html|php)$ /$1/ [R=301,L] ``` これはファイル名がindex.phpかindex.htmlの場合なので下記のような場合に有効だと思います。 http://mg1986jp.xsrv.jp/index.php http://mg1986jp.xsrv.jp/index.html 私の場合の http://mg1986jp.xsrv.jp/index.php/welcome/hello/nameは index.phpはファイルというかリンボリックリンクでなおかつ、urlの最後ではなく途中に含まれている文字列のためどう検出して、どういう記述をすればいいのかがわかりません。 追記 下記2パターンのpublic_html配下です。 index.phpは普通のファイルです。 これでhttp://mg1986jp.xsrv.jp/にアクセスすると省略できています。 ファイルだからなのか、、、 ``` [mg1986jp@sv5015 public_html]$ ll -rw-r--r-- 1 mg1986jp members 1 1月 19 01:43 .htaccess -rw-r--r-- 1 mg1986jp members 17 1月 19 01:44 index.php ``` index.phpはシンボリックリンクです。 これでhttp://mg1986jp.xsrv.jp/にアクセスするとご丁寧にhttp://mg1986jp.xsrv.jp/index.htmlとなります。 ちなみに.htaccessは未設定でなにも記述していません。 この挙動は標準なのでしょうか、、、 ``` [mg1986jp@sv5015 public_html]$ ll -rw-r--r-- 1 mg1986jp members 1 1月 19 01:43 .htaccess lrwxrwxrwx 1 mg1986jp members 21 1月 19 01:45 index.html -> ../lib/sample/public/ ``` とにかく、シンボリックリンクでもindex.htmlを省略したいのです。
回答: ↑こいつを参考に下記で解決。 シンボリックリンクを取り除きながらhttpsにもリダイレクトさせました。 ModPagespeed On BEGIN Invisible default document and https =========================================== RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteRule ^(.*)$ /index.html/$1 [L] END Invisible default document and https =========================================