人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【質問】
サーバの設定で、URL内のスラッシュの重複を許可しない(または重複を自動的に削除する)方法を教えてください。

【例】
URL1:http://weather.yahoo.co.jp/weather/

例えば上記URLは、以下のようにしても見れます。

URL2:http://weather.yahoo.co.jp//////////////////////////weather/

ですが、自分の動かしている別サイトでは、root以下にスラッシュが複数あるURLで
アクセスした時には、エラーを返すようにしたいのです。

もし可能であれば、重複を自動的に削除できればなお良いです。
この場合、上記のURLの例であれば、URL2でアクセスしても、
URL1に自動的にアクセスしなおすようにするということです。

ちなみにサーバは、Apache2.0でバーチャルホストを使っています。

●質問者: mizox
●カテゴリ:ウェブ制作
✍キーワード:2.0 root URL アクセス エラー
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● jouno
●20ポイント

http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html

mod_rewrite

mod_rewriteで可能なはずです。

エラーを返すならばエラードキュメントにリダイレクトしてください。

基本的には正規表現で文字列としてurlを置換します。


RewriteEngine on

RewriteRule (.*)/+(.*) $1/$2


でいいような気がしますが、手元に環境がないのでこれはまったく試してません。

◎質問者からの返答

ありがとうございます。

念のため、引き続き回答を募集します。


2 ● ootatmt
●20ポイント

http://httpd.apache.org/docs/2.0/ja/mod/mod_alias.html#redirectm...

mod_alias - Apache HTTP ??????

RewriteEngine on

RewriteRule (.*)/+(.*) $1/$2


これではURLが変わりませんので、以下のように RedirectMatch を使うとよいと思います。


RedirectMatch 302 (.*)//(.*) http://example.com$1/$2


ただし、スラッシュの数だけリダイレクトが発生しますので注意が必要です。

◎質問者からの返答

ありがとうございます。

引き続き回答をお待ちします。


3 ● ito-yu
●20ポイント

書き換えはうまくできないかもしれないので、とりあえずエラーにする方法を。

RewriteEngine On

RewriteRule ^(.*)//(.*)$ http://your.domain.com/404.html [L,R]

こうすると、リクエストされたURLの中にスラッシュ2つ連続しているときにhttp://your.domain.com/404.htmlにリダイレクトします。

◎質問者からの返答

ありがとうございます。

ではこれ以降は、書き換えの方法について回答頂ければありがたいです。>みなさま


4 ● ito-yu
●20ポイント

すみませんさっきのは先頭2つのスラッシュに対応できてなかったのでこっちに差し替えで※ポイント結構です

RewriteEngine On

RewriteRule ^(/|(.*)//)(.*)$ http://labs.oqzl.net/?404 [L,R]

◎質問者からの返答

了解です。ありがとうございます。

引き続き回答を募集します。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ