web-dev-qa-db-ja.com

index.htmlをデフォルトにしますが、入力するとindex.phpにアクセスできるようにします

.htaccessファイルに次の行があります。

DirectoryIndex index.html index.php

Index.phpにアクセスするたびに、index.htmlに移動します。両方を許可することはできますが、www.domain.comにアクセスするユーザーのデフォルトはindex.htmlのままにしておきますか?

56
Matt Rowles

デフォルトでは、DirectoryIndexは次のように設定されます。

DirectoryIndex index.html index.htm default.htm index.php index.php3 index.phtml index.php5 index.shtml mwindex.phtml

Apacheは上記の各ファイルを順番に検索し、訪問者がディレクトリだけをリクエストしたときに最初に見つかったファイルを提供します。 Webサーバーが現在のディレクトリでDirectoryIndexディレクティブの名前に一致するファイルを検出しない場合、ディレクトリ一覧がブラウザに表示され、現在のディレクトリのすべてのファイルが表示されます。

順序はDirectoryIndex index.html index.phpである必要があります//デフォルトはindex.htmlです

リファレンス:ここ .

90
The Alpha

WordPressを使用している場合、これを解決するフィルターフックがあります。

remove_filter('template_redirect', 'redirect_canonical'); 

(これをテーマのfunctions.phpに入れてください)

これは、WordPressにindex.phpをルートページにリダイレクトせずに、ルートページに戻るように指示します。そうすれば、index.html.htaccessのデフォルトページとして割り当てることができ、index.phpと一緒に動作できます。

16

@TheAlphaの受け入れられた答えに同意します.ApacheはDirectoryIndexターゲットファイルを左から右に読み取り、最初のファイルが存在する場合はapcheがそれを提供し、そうでない場合は次のファイルがディレクトリのインデックスとして提供されます。したがって、次のディレクティブがある場合:

DirectoryIndex file1.html file2.html

Apacheはインデックスとして/file.htmlを提供します。インデックスとして/file2.htmlを設定する場合は、ファイルの順序を変更する必要があります。

DirectoryIndex file2.html file1.html

RewriteRuleを使用してインデックスファイルを設定することもできます

RewriteEngine on

RewriteRule ^$ /index.html [L]

上記のRewriteRuleは、ホームページを/index.htmlに書き換えます。書き換えは内部的に行われるため、 http://example.com/ がindex.htmlの内容を表示します。

5
starkeen

DirectoryIndex index.html index.htm default.htm index.php index.php3 index.phtml index.php5 index.shtml mwindex.phtml

それは何の手段もありませんか?このように追加する必要があるかもしれません!

<IfModule dir_module>
    DirectoryIndex index.php index.html index.htm
</IfModule>

enter image description here

2
xgqfrms
RewriteEngine on
RewriteRule ^(.*)\.html$ $1.php%{QUERY_STRING} [L]

これらの2行を.htaccessファイルの先頭に配置します。 .phpページのURLに.htmlが表示されます。

RewriteEngine on
RewriteRule ^(.*)\.php$ $1.html%{QUERY_STRING} [L]

これを使用して、.htmlページのURLに.phpを表示します。

1
user1249679

こんにちは、

さて、私は上記の方法を試しました!はい、動作していますが、私が望んでいた通りではありません。 デフォルトのページ拡張子をリダイレクトを追加のアクションでメインドメインにリダイレクトしたかったのです。

ここで私がそれを行う方法...

# Accesible Index Page
<IfModule dir_module>
 DirectoryIndex index.php index.html
 RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(html|htm|php|php3|php5|shtml|phtml) [NC]
 RewriteRule ^index\.html|htm|php|php3|php5|shtml|phtml$ / [R=301,L]
</IfModule>

上記のコードは、単にindex。*をキャプチャし、メインドメインにリダイレクトします。

ありがとうございました

1
Jodyshop