59

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

DirectoryIndex index.html index.php

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

4

6 に答える 6

90

デフォルトでは、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です。

参照: ここ

于 2012-04-10T03:23:24.697 に答える
17

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

remove_filter('template_redirect', 'redirect_canonical'); 

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

これは、WordPressにindex.phpルートページにリダイレクトするのではなく、現在の場所に座るように指示します。そうindex.htmlすれば、のデフォルトページとして割り当てることができ、.htaccessと一緒に機能することができますindex.php

于 2015-06-17T19:57:08.383 に答える
6

@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の内容が表示されます。

于 2017-02-25T09:35:26.987 に答える
4

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>

ここに画像の説明を入力してください

于 2016-10-01T12:56:42.747 に答える
2

やあ、

さて、私は上記の方法を試しました!はい、動作していますが、私が望んでいた方法ではありません。さらにアクションを実行して、デフォルトのページ拡張機能をメインドメインにリダイレクトしたいと思いました。

ここで私はそれをどのように行うか...

# 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>

上記のコードは、インデックスをキャプチャするだけです。*そしてそれをメインドメインにリダイレクトします。

ありがとうございました

于 2019-03-13T23:17:13.677 に答える
1
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を表示します。

于 2012-04-10T11:51:16.157 に答える