Lemon73
@Lemon73

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

自作サイトで/indexを省略したい

/indexを省略したい

NetOwlのStarFreeサーバー(無料サーバー)で自作サイトを作っています。
サイト内で移動したときにリンクがhttp://■■■.jpと表示させたいのですが、
http://■■■.jp/indexと表記されます。
indexファイルは.shtmlにしています。
(サーバーの仕様でSSIを使うためには.shtmlにしなければならないようです。)

ちなみに、http://■■■.jp/index.htmlと入力するとhttp://■■■.jpにリダイレクトされます。
また、http://■■■.jpでもhttp://■■■.jp/indexでも動作自体は正常です。

現在の.htaccess

/indexを省略するための文

.htaccess
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.shtml
RewriteRule ^(.*)index.shtml$ http://■■■.jp/$1 [R=301,L]

.htmlと.shtmlを省略するための文

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

RewriteCond %{THE_REQUEST} \.(shtml|html)\ HTTP
RewriteRule ^(.*)\.(shtml|html)$ /$1 [R=301,L]

(上記では二つに分けていますが、実際のファイルでは
[/indexを省略するための文]の下に[.htmlと.shtmlを省略するための文]が続いています。)

自分で試したこと

DirectoryIndexの変更を試しましたが、変更はありませんでした。
また、[/indexを省略するための文]と[.htmlと.shtmlを省略するための文]の順番を入れ替えや、[R=301,L]の記述をなくすというのも試してみましたが、特に変更はありませんでした。

1

3Answer

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.shtml [L,QSA]

上記のルールは、URLにファイルが存在しない場合に/index.shtmlにリダイレクトするように設定されています。これだとどうですか?

2Like

Comments

  1. @Lemon73

    Questioner

    返信遅れてごめんなさい<(_ _)>
    こちらのコードにしたら.shtmlの部分を消すことができました。
    ありがとうございます!!

自己解決しました。
.htaccessでの修正ではありませんが、
shtmlのルートリンクを"/index.shtml"のところを"/"に変更したら修正できました。

1Like

□追加情報□
index.shtmlでも相対パスだとhttp://■■■.jpの表示で、
ルートパスだとhttp://■■■.jp/indexの表示になるようです。

0Like

Your answer might help someone💌