.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の内容が表示されます。
やあ、
さて、私は上記の方法を試しました!はい、動作していますが、私が望んでいた方法ではありません。さらにアクションを実行して、デフォルトのページ拡張機能をメインドメインにリダイレクトしたいと思いました。
ここで私はそれをどのように行うか...
# 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>
上記のコードは、インデックスをキャプチャするだけです。*そしてそれをメインドメインにリダイレクトします。
ありがとうございました
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を表示します。