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

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

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

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

URL

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

1727閲覧

.htaccessで個別ファイルへのアクセスを.htmlなしに統一したいのですが

ebs

総合スコア8

mod_rewrite

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

URL

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

0クリップ

投稿2018/07/10 01:37

編集2018/07/10 02:55

前提・実現したいこと

.htaccessでの個別ページのリダイレクトについて

「.html」付きのURLへアクセスした場合に、
「.html」なしのURLへ301リダイレクトさせたいです。

(アナリティクスでアクセス解析していたところ、
.htmlがつくURLに少しアクセスが分散していたので。)

下記のように、個別ページへのアクセスをリダイレクトさせたいです。
(ディレクトリではなく、個別ファイルへのアクセスを。)

例1
example.com/abc/def.html

example.com/abc/def

例2
example.com/bcd/efg.html

example.com/bcd/efg

上記の両例のようにアクセスを統一したいです。

.htaccessの記述で、上記のように301リダイレクトさせる、
RewriteCond、RewriteRuleを教えて頂けませんでしょうか?

発生している問題・エラーメッセージ

現在は下記の記述をして、「.htmlあり」「.htmlなし」、
どちらのURLにもアクセスできるようになっています。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html

しかし、これではアクセスが分散してしまうので、
「.htmlなし」のほうにアクセスを統一したいです。

試したこと

その後、色々と試しましたが上手くいきません。

補足情報(FW/ツールのバージョンなど)

ちなみに、「wwwありなし」「index.htmlありなし」など、
他の基本的なURL正規化はすでに実装しています。
↑この情報はGoogle検索でよくよく出てくるのですが、
個別ファイルのURLを統一する記述が出てきません。

また、link rel="canonical"によって、
検索エンジン向けで一応の対策はしています。

aaaaaaaa👍を押しています

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

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

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

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

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

otn

2018/07/10 02:34

ブラウザから http://sample.com/abc/def でアクセスすれば、ちゃんとページが表示されるようになっていると言う事でしょうか?
otn

2018/07/10 02:36

あと、例示であればexampleドメインを使いましょう。sampleだと所有者が居るはず。
ebs

2018/07/10 02:57

otnさん、ご回答ありがとうございます。exampleドメインの例示に変更しました。また、現在は「.htmlあり」「.htmlなし」どちらでもアクセスできるようになっています。(この情報も投稿に追記しました) よろしくお願い致します。
CHERRY

2018/07/10 03:28 編集

同じ内容を再度回答しなくて済むので、色々と試した内容とその結果を記載してください。また、レンタルサーバーの場合は、制約がある場合もあるので、会社名とサービス名を記載してください。
ebs

2018/07/12 11:57

CHERRYさん 色々と試したのですが、おそらく全くズレたコーディングをしていたので個別に記憶していません。レンタルサーバーは、さくらのプレミアムプランを使っています。
guest

回答1

0

すでに、拡張子無しから拡張子有りにリライトしているようなので、逆向きのリダイレクトを行うと、ループしてしまいます。

拡張子有り→無しにリダイレクト→有りにリライト→無しにリダイレクト→有りにリライト→・・・・

#追記
クッキー前提なら多分できます。

Apache

1RewriteEngine On 2RewriteCond %{REQUEST_FILENAME} !-d 3RewriteCond %{REQUEST_FILENAME}.html -f 4RewriteRule ^(.*)$ $1.html [L,CO=notredirect:1:example.com] 5RewriteCond %{HTTP_COOKIE} !notredirect 6RewriteRule (.*).html $1 [R=301,L]

投稿2018/07/10 03:29

編集2018/07/10 04:45
otn

総合スコア84498

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

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

ebs

2018/07/12 11:59

ご回答ありがとうございます。 ご提案頂いたコードで試しましたが、 「htmlあり」「htmlなし」どちらでもアクセスできる状態のままでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問