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

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

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

ApacheウェブサーバーのためのURL書き換えモジュールです。主にプリティーURLに使われていますが、同様に単純置換を超えた、多様なタスクの処理能力や柔軟性があります。

Apache

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

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

解決済

1回答

680閲覧

mod_rewriteでURLを書き換えたい。

earnest_gay

総合スコア615

mod_rewrite

ApacheウェブサーバーのためのURL書き換えモジュールです。主にプリティーURLに使われていますが、同様に単純置換を超えた、多様なタスクの処理能力や柔軟性があります。

Apache

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

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

2クリップ

投稿2018/01/18 16:18

編集2018/01/18 16:55

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を省略したいのです。

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

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

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

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

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

guest

回答1

0

自己解決

https://teratail.com/questions/17497
↑こいつを参考に下記で解決。
シンボリックリンクを取り除きながらhttpsにもリダイレクトさせました。

ModPagespeed On

BEGIN Invisible default document and https

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteRule ^(.*)$ /index.html/$1 [L] </IfModule> # END Invisible default document and https

投稿2018/01/18 17:38

earnest_gay

総合スコア615

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問