Example.comページがあります。 index.htmlのないホームページが必要です(example.com/index.html-> example.com)
RewriteEngine On
RewriteRule ^index\.html$ / [R=301,L]
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]
動作しますが、/ de /(言語)フォルダーに対して作成するルールは何ですか?
上記のフォルダー/ de /のコードは、example.com(example.com/de/index.htmlまたはexample.com/de/index-> example.com)にリダイレクトします。 正しいリンク:example.com/de/
/ de /フォルダーのルールを作成する方法は?ルールを変更するには?
期待される効果
example.com/index.html example.com/index -> example.com
example.com/de/index.html example.com/de/index -> example.com/de/
.htaccess-example.com
RewriteEngine on
RewriteCond %{HTTP_Host} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
RewriteRule ^index\.html$ / [R=301,L]
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]
ErrorDocument 404 /
Options +Multiviews
.htaccess-example.com/de/
RewriteEngine on
RewriteCond %{HTTP_Host} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
RewriteRule ^index\.html$ / [R=301,L]
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]
ErrorDocument 404 /de/
Options +Multiviews
基本的には、/de/.htaccess
ファイルを完全に削除するだけです!* 1 ルート.htaccess
はすでに必要なリダイレクトを実行しています。
(* 1 または、別の言語固有の404ファイルが必要な場合は、すべてのディレクティブを削除し、ErrorDocument
ディレクティブを保持します。ただし、ErrorDocument
ディレクティブの形式については、以下の注を参照してください。)
RewriteRule ^index\.html$ / [R=301,L]
ファイルの/de/.htaccess
ディレクティブは、リクエストをドキュメントルートにリダイレクトし直し、サブディレクトリを失っています。しかし、上記のように-これはとにかく必要ありません。
301はブラウザによって永続的にキャッシュされるため、ブラウザのキャッシュをクリアする必要があります。このため、302(一時)リダイレクトでテストすることをお勧めします。
example.com/de/index
また、index
を本当にリダイレクトする必要があるかどうかも質問します。 MultiViews
を有効にしているため、これにのみアクセスできます。個人的には、MultiViews
を無効にし(注意しないとmod_rewriteとの競合がさらに発生する可能性があります)、/index
のリクエストが404で失敗するようにします。
MultiViews
を有効にすると、すべてのHTMLファイルと静的リソースに拡張子なしでアクセスできます。
つまり、MultiViews
が無効になっていることを確認するには:
Options -MultiViews
MultiViews
はdefaultによって無効になることに注意してください。 (一部の共有ホストは、何らかの理由でサーバー構成で明示的に有効にしていますが。)
RewriteRule ^index\.html$ / [R=301,L] RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]
必要に応じて、これらの2つのディレクティブを1つに減らすことができます。
RewriteRule ^(|.+/)index\.html$ /$1 [R=301,L]
ErrorDocument 404 /
ディレクトリインデックスのサブリクエストを発行するmod_dirに依存する代わりに、エラードキュメントへの完全なURLパスを指定する必要があります。例えば:
ErrorDocument 404 /index.html
ルート/.htaccess
ファイル:
# Disable MutliViews
Options -Multiviews
ErrorDocument 404 /index.html
RewriteEngine on
# Remove www subdomain and redirect to HTTPS
RewriteCond %{HTTP_Host} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
# Remove "index.html" from all URLs
RewriteRule ^(|.+/)index\.html$ /$1 [R=301,L]