サポート » その他 » 特定の拡張子のみリダイレクトしたい

  • 解決済 tarove

    (@tarove)


    拡張子が.htmlのファイルを全てトップページにリダイレクトを行いたいのですが、
    検索して見つけた書き方が、

    RewriteEngine on
    RewriteRule ^(.*)\.html$ http://abcde.com/ [R=301,L]

    でした。
    この書き方で、リダイレクト後のURLもトップURLで表示されるのですが、
    .html以外のディレクトリなどは、
    http://abcde.com/hoge/
    のURLのままでトップページが表示されてしまいます。
    存在しないディレクトリなどは404で表示したいのですが、どう書いたら良いでしょうか?

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • ワードプレスをインストールされると htaccess は自動的にみな index.php が読むように、存在していないディレクトリまたはファイルであれば index.php 経由でテーマフォルダ内の 404.php が表示されるようになされているかと思うのですが、現在は下記の2点+1のいずれかが当てはまるでしょうか?

    ・テーマフォルダ内に 404.php ファイルがない
    ・.html ファイルは存在している
    + .html ファイルが存在する場合、それを削除する予定はない

    テーマフォルダに404.phpファイルはあります。
    ErrorDocument 404 /wp/wp-content/themes/テーマ/404.php
    を指定してみたのですが動作しませんでした。
    .htmlファイルは存在しません。

    パーマリンク設定を変更し、ディレクトリや拡張子のページを全て
    /?p=123
    のように変更しました。
    この変更で、存在しないページが全てサーバーの404ページが出るようになったので、
    上記のようなリダイレクト処理をワードプレスのhtaccessの頭に記述しました。
    拡張子が.htmlファイルのリダイレクトは正常にされるのですが、
    それ以外の存在しないURLがそのままのURLでトップページが表示されています。

    なるほどです。
    まず一番最初の htaccess 状態にしていただくと、html ファイルは見つからないので 404.php にて表示されますよね。
    この 404.php をトップページへリダイレクトさせる内容にすると html 問題は解決するでしょうか。

    次に、存在しないクエリページを開く場合、アドレスがそのままで表示内容がトップページになるのを、404.php の内容表示ということでよろしいでしょうか。
    それも同じく最初の状態で 404.php が表示されると思うのですがどうでしょうか。

    htaccess を初期の状態にされて、拡張子が html の場合のみ 404.php が内容表示ではなくトップへ移動させる働きをする、というものであれば

    ・function.php 内でリクエストが html で来た場合、トップページへリダイレクトさせる
    ・404.php にて拡張子が html のリクエストだった場合 Javascript でリダイレクトさせる

    といった方法がとれると思うのですがいかがでしょうか。

    ほとんどのページがサーバーの404ページの状態になっていたので、
    htaccessの先頭で行ってみました。

    ずっと調べていたら
    RewriteCond %{REQUEST_URI} (^/.*/)
    でディレクトリページの回避ができました。
    ありがとうございました!

    ありがとうございました。

    クエリ処理されているのだけれども、見ためはディレクトリを指定してるので、まるでデフォルトの「index.html」が読みだされているように見える事象について、というお話だったのですね。
    失礼いたしました。以後気を付けます。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「特定の拡張子のみリダイレクトしたい」には新たに返信することはできません。