URLのindex.htmlのある なしについて

このQ&Aのポイント
  • ホームページのURLにindex.htmlが含まれると、検索エンジンに別のURLとして認識されてしまうことがあります。
  • index.htmlなしに統一するために、.htaccessファイルを作成してリダイレクトする方法があります。
  • ただし、index.htmlに直接アクセスする場合にはページが表示されなくなる可能性があります。
回答を見る
  • ベストアンサー

URLのindex.htmlのある なしについて

ホームページ作成しているのですが今あることが気になって質問させてもらいました。 たとえば私のホームページのURLが http://xxxx.test.jp/だとすると http://xxxx.test.jp/index.htmlでも同じく表示されてしまいます。 調べたらそれは別のURLと検索エンジンにて認識されてしまうので統一した方がいいのではと思い index.htmlなしに統一しようと思い RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://xxxx.test.jp /$1 [R=301,L] にて .htaccessファイルを作成しました。 多分それでindex.htmlなしに統一できたと思うのですが、次に問題が発生しました。 今度は、 http://xxxx.test.jp/ では正常に表示されるのですが、 http://xxxx.test.jp/index.html では ページが表示されなくなりました。 実際 http://xxxx.test.jp/index.html でお気に入りに入れている方やリンクを張っている方もいるので http://xxxx.test.jp/index.html でURLを入れたら自動で http://xxxx.test.jp/ に変換することはできるのでしょうか? たとえば 以下のサイト http://www.javadrive.jp/ みたいに http://www.javadrive.jp/ でも http://www.javadrive.jp/index.html でも表示できるようにしたいのですが アドバイスお願いします。

  • HTML
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

>調べたらそれは別のURLと検索エンジンにて認識されてしまうので統一した方がいいのではと思い  その必要は全くありません。!!!  Directory Indexは、基本的にどのサーバーも指定されています。  どうしてもなら、サイト内のすべてのリンクを絶対パスにすれば良いですけど・・面倒くさい。

takeharu11
質問者

お礼

ありがとうございます。 とりあえず絶対パスで記述してみました。

その他の回答 (2)

  • f1204-okw
  • ベストアンサー率84% (16/19)
回答No.3

以下の 3 行”のみ”記述して試してください。 ----- RewriteEngine on RewriteCond %{REQUEST_URI} ^(.*/)index\.html$ RewriteRule ^ %1 [noescape,redirect=permanent,last] ----- これで動かなければ、他のディレクティブとの干渉が考えられます。 そこから先はご自身で調査するほかありません。

takeharu11
質問者

補足

やはりだめでした 上記三行をテキストエディタに記述して適当な名前を付けてサーバーへアップロードしてアップロード後ファイル名を.htaccess に変更しました。やり方としては間違っていませんよね。

  • f1204-okw
  • ベストアンサー率84% (16/19)
回答No.2

ほかの設定をあまり複雑にしていなければ,以下の記述でお望みの結果が得られるかと思います: RewriteCond %{REQUEST_URI} ^(.*/)index\.html$ RewriteRule ^ %1 [noescape,redirect=permanent,last] この設定により http://xxxx.test.jp/index.htmlhttp://xxxx.test.jp/ へリダイレクトされます。 また http://xxxx.test.jp/sub/index.htmlhttp://xxxx.test.jp/sub/ へリダイレクトされます。

takeharu11
質問者

補足

ありがとうございます。 今いろいろ試してみましたがリダイレクトされません。 どのように記述すればよいのでしょうか? RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ RewriteCond %{REQUEST_URI} ^(.*/)index\.html$ RewriteRule ^ %1 [noescape,redirect=permanent,last] http://xxxx.test.jp /$1 [R=301,L] このように記述したりいろいろ試みましたができません。 アドバイスお願いします。

関連するQ&A

  • www付き・なしのURL統一について

    運営しているサイトのwwwwありとwwwなしのURLの統一をする事にしました。 ホームページで検索した所htaccsessで実現できることが判明し、 説明ページを参考に以下のように設定しました。 RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.hogehoge\.jp)(:80)? RewriteRule ^(.*) http://hogehoge.jp/$1 [R=301,L] これにより http://www.hogehoge.jp/へのアクセスは http://hogehoge.jp/にリダイレクトされるようになったのですが ディレクトリ以下のwww付きURLにアクセスすると なぜかトップへリダイレクトされるようになりました。 例: http://www.hogehoge.jp/fugafuga/index.phpへアクセスすると http://www.hogehoge.jp/index.phpにジャンプします これは何か設定が間違っているということなのでしょうか? ご存知の方がいましたらご回答よろしくお願い致します。

  • さくらサーバーでURLの正規化ができません。

    wwwをなし、index.htmlをともに、無しにしたいのですが、うまくいきません。 以前ににも、同じような質問があったので、いろいろ試してみました。 さくらサーバーのマルチドメインでサイトを作ってます。 さくらインターネットはURLの正規化で一般的に記述する「Options +FollowSymLinks」が使えないということでこちらのサイトを参考に「.htaccess」を作成しました。 /www/のところにアップし、種類も.htaccesファイルになっているようなのですが、 wwwをつけて、検索すると、wwwがついたままで、無しで検索するとないままの表示です。 index.htmlをつけてると、そのまま、index.htmlと付いたまま表示されます。 参考サイト http://d.hatena.ne.jp/web-ma/20100301/1267415998 ▼wwwあり・なし RewriteEngine on RewriteCond %{HTTP_HOST} ^lusso-me.jp RewriteRule ^(.*)$ http://www.lusso-me.jp$1 [R=301,L] ▼index.htmlあり・なし RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://www.lusso-me.jp$1 [R=301,L] ほかのサイトもチェックして、いろいろやってみたのですが、エラーもでず、変化がありません。 よろしくお願いします。

  • URLの正規化について

    サイトのURLを「wwwなし」「index.htmlなし」の『http://thai-kosiki.net/』に統一したいと思い、 .htaccessファイルを作りサーバーのルートディレクトリにアップロードしました。 『http://thai-kosiki.net/index.html』と入力すると、自動的にURLが『http://thai-kosiki.net/』に置き換わるのですが、『http://www.thai-kosiki.net/』や『http://www.thai-kosiki.net/index.html』と入力すると「このウェブページにアクセスできません」と出てきます。 これは「wwwなし」にチャント正規化できていないと言うことなのでしょうか? .htaccessファイルの内容は以下です。 <Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> Options -Indexes RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.thai-kosiki\.net)(:80)? [NC] RewriteRule ^(.*) http://thai-kosiki.net/$1 [R=301,L] order deny,allow Options FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://thai-kosiki.net//$1 [R=301,L] アドレスにwwwを付けても自動的に『http://thai-kosiki.net/』に置き換わるようにするにはどうしたらいいのでしょうか? どうぞよろしくお願いします。

  • htaccessでindex.htmlありに統一

    「http://hoge.jp/web/」にアクセスがあった場合に 「http://hoge.jp/web/index.html」にリダイレクトさせようと考えています。 調べたところ.htaccessに下記の記述でできるという事まではわかったのですが「Internal Server Error」になってしまいます。 何が原因なんでしょうか? RewriteEngine on RewriteCond %{REQUEST_FILENAME} -d RewriteCond %{REQUEST_FILENAME}/index.html -f RewriteRule ^(|.*/)$ /$1index.html [R,L] 上記が解決できた場合に合わせての質問案ですが、ドメイン直下だけは「index.htmlなし」にしたいと考えてます。 http://hoge.jp/index.html ↓ http://hoge.jp/ よろしくお願いします。

  • CodeIgniterのURLの簡素化

    CodeIgniterでの開発を考えているのですが、URLを簡単にするための.htaccessが有効にならずに困っています。 RewriteEngine on RewriteCond $1 !^(index\.php|css|user_guide|.+\.gif$|.+\.jpg$|.+\.png$|.+\.js$) RewriteRule ^(.*)$ /CodeIgniter/index.php/$1 [L] をどこにおけばいいのか分かりません。どの階層でしょうか?

    • ベストアンサー
    • PHP
  • htaccess 同一URL携帯転送とwww有無統一の両立

    RewriteEngine onを使った、 htaccessの書き方について質問させてください。 1.SEOのため、URLは「www」ありに統一させたい。 2.www.○○○.jpとURL直接入力した際、PCにはPC向けのページを、   携帯には携帯向けのページを表示させたい。 この二つの条件を両立するため、下記のとおりhtaccessを書いてみたのですが、携帯からアクセスしても、PCのTOPが無理やり表示されてしまうという結果に終わりました。 どうすればよいのか、ご存知の方お教えください。 --------------------------------------------------------------- RewriteEngine on RewriteCond %{HTTP_HOST} ^ドメイン\.jp RewriteRule (.*) http://www.ドメイン.jp/$1 [R=301,L] RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^vodafone [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^SoftBank [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^KDDI [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^Up.Browser [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^ASTEL [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^DDIPOCKET [NC] RewriteCond %{HTTP_USER_AGENT} ^WILLCOM [NC] RewriteRule ^$ 携帯用URL [R]

  • 301リダイレクトの例外処理

    WEBサイト全体に 拡張子がhtmとhtmlが混在していて管理がわずらわしいので、 .htaccessで下記のような設定をしました。 ドメイン直下に.htaccessを置いているので、サイト全体でこの設定が有効に なっているのですが、あるフォルダだけこれが適用されないように 設定をしたいと思います。 いろいろやってみたのですが、今ひとつ正常に動いてくれません。 どのようにすればいいのでしょうか。 -------------------------------------------------------------- Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^XXX.jp RewriteRule ^(.*)$ http://www.XXX.jp/$1 [R=301,L] Options +FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://www.XXX.jp/$1 [R=301,L] Options +FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.htm RewriteRule ^(.*)index.htm$ http://www.XXX.jp/$1 [R=301,L] -------------------------------------------------------------- サーバーはApache/1.3.42 .htaccessファイルを置いているのは、ドメイン直下です。

  • .htaccessファイル設置エラーの原因

    .htaccessファイルの設置エラーの原因についてお尋ねします。 下記の内容の.htaccessを置きたいのですが、最初の4行の ErrorDocumenet だけを入れてアップロードしていたときは問題なかったのですが、 Options +FollowSymLinksを3つ足すと、 500 Internal Server Error になりホームページが表示できなくなります。 もともと他のサーバー(CPI)で使って問題なかった内容なので、文法エラー などではないと思うのですが。 原因として可能性のあるものは何でしょうか。 ------------------------------------------------- ErrorDocument 401 http://XXX.jp/error401.html ErrorDocument 404 http://XXX.jp/error404.html ErrorDocument 403 http://XXX.jp/error403.html ErrorDocument 500 http://XXX.jp/error500.html Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^XXX.jp RewriteRule ^(.*)$ http://www.XXX.jp/$1 [R=301,L] Options +FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://www.XXX.jp/$1 [R=301,L] Options +FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.htm RewriteRule ^(.*)index.htm$ http://www.XXX.jp/$1 [R=301,L] ------------------------------------------------- Webサーバーはさくらインターネット、Apache/1.3.42 .htaccessファイルを置いているのは、ドメイン直下です。

  • 動的urlに最後にスラッシュを付ける方法

    動的urlの最後に無理矢理スラッシュを付けて静的にする方法を教えてください。 例 xxx/index.php?section=1 → xxx/index.php?section=1/ .htaccessに RewriteEngine On AllowEncodedSlashes On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^index.php?section=(.*)/$ index.php?section=$1 とやってもだめです。 教えてください。

    • 締切済み
    • PHP
  • htaccessでurlの正規化しかし・・・

    htaccessでindex html有りなしの正規化をしました。 ▼ソース # URLの正規化(index.html無し) Options FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://scinex-fw.co.jp/$1 [R=301,L] これで一安心と思いきや、問題が発生しました。 フォームにフリーのCGIを使用してるのですが、 確認ボタンを押すと「403 Forbidden」が返されてしまいます! CGIはまったくわかりませんが、 通常は確認ボタンをクリックすると「mail.cgi」か「config.cgi」 おそらく「mail.cgi」が「kakunin.html」を表示させる手はずだと思います。 htaccessの設定前まではうまくいっていたのですが、 現在はhtaccessを消さないと「403 Forbidden」が呼び出されます。 何か解決方法はございませんでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • CGI

専門家に質問してみよう