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

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

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

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

1回答

339閲覧

URLに不要な「.」や「/」が含まれているとページにアクセスできないようにしたい

skm

総合スコア11

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

0クリップ

投稿2018/03/28 03:54

編集2022/01/12 10:55

わからないこと

今朝、.htaccessの設定のために検索して調べては.htaccessを上書きして試行・・・という作業を延々と繰り返していたところ、本現象に気が付きました。

codeigniterではindex.php/以降のリクエストからコントローラが実行されますが、ここに存在しないクラスやメソッドの名前が入力された場合には404エラーになるはずが、余計な「.」や「.」が入力されてもページが表示されてしまいました。

http://example.com」は末尾にドットを足して
http://example.com.」でも表示され、
http://example.com/form/」は文字中にドットを足して
http://example.com/.f.o.r.m./」でも表示されました。
さらに
http://example.com////.f.o.r.m./」というURLでもアクセスできてしまいました。

このような「.」や「/」が含まれたリクエストが送られてきた場合、どのように対処すればよいのでしょうか。

URL中に無数の「.」や「/」が含まれているにも関わらず目的のページにアクセスできてしまうのはなんだか気持ちが悪いです。

やってみたいこと

http://oreoredomain.jp.」や
http://example.com///.f...o..r..m./」
などのリクエストに対して404エラーを出すようにしたいです。

.htaccessで処理できるものなのか、
それともアプリケーション側をいじる必要があるのか、
ヒントだけでも頂けたら嬉しいです。

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

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

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

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

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

guest

回答1

0

http://oreoredomain.jp.

これについては、URLを解釈するのはブラウザ側ですし、RFC 3986上も

DNS における完全修飾ドメイン名{fully qualified domain name} の最も右のドメインラベルは単一の "." を付ける事ができ

となっているように(和訳)、アクセスできてしかるべきものです。

投稿2018/03/28 04:13

maisumakun

総合スコア145121

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

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

skm

2018/03/28 04:18

回答ありがとうございます。 ドメイン名の命名規則上?は正しい記述なのですね。 「https://www.yahoo.co.jp」では 「https://www.yahoo.co.jp.」にアクセスすると「障害が発生しているため、しばらくしてから、再度アクセスしてください。」というページに変遷します。 このような挙動ができるようにしたい、と考え質問しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問