.htaccessファイルに次の行があります。
DirectoryIndex index.html index.php
Index.phpにアクセスするたびに、index.htmlに移動します。両方を許可することはできますが、www.domain.comにアクセスするユーザーのデフォルトはindex.htmlのままにしておきますか?
デフォルトでは、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です
リファレンス:ここ .
WordPressを使用している場合、これを解決するフィルターフックがあります。
remove_filter('template_redirect', 'redirect_canonical');
(これをテーマのfunctions.php
に入れてください)
これは、WordPressにindex.php
をルートページにリダイレクトせずに、ルートページに戻るように指示します。そうすれば、index.html
を.htaccess
のデフォルトページとして割り当てることができ、index.php
と一緒に動作できます。
@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の内容を表示します。
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を表示します。
こんにちは、
さて、私は上記の方法を試しました!はい、動作していますが、私が望んでいた通りではありません。 デフォルトのページ拡張子をリダイレクトを追加のアクションでメインドメインにリダイレクトしたかったのです。
ここで私がそれを行う方法...
# 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。*をキャプチャし、メインドメインにリダイレクトします。
ありがとうございました