実現したいこと
「.htaccess」を用いて、URLの末尾や途中の階層(ディレクトリ)に「 /(スラッシュ)」が2つ以上ある場合に、スラッシュが1つのURLにリダイレクトさせたいです。
例)
・末尾にスラッシュが複数ある場合
「https://example.co.jp//」→「https://example.co.jp/」
・途中の階層(ディレクトリ)にスラッシュが複数ある場合
「https://example.co.jp//about/」→「https://example.co.jp/about/」
前提
1.作成しているWEBサイトは静的なサイトです。
2.静的サイトの中のブログ機能としてWPを組み込んでいますが、WPの方は正常にリダイレクトできています。
調べながらいろいろな記述を試していますが、知識不足で実現できません。
どうぞよろしくお願いいたします。
ディレクトリの状態
example(サイトのルートディレクトリ) ├── index.html ├── .htaccess ←このファイルで静的ページのリダイレクトを制御 ├── about . .└── index.html ├── contact . .└──index.html └── blog . .└──wp-admin . .└── wp-content . .└── wp-includes . .└── .htaccess ←このファイルでWPページのリダイレクトを制御(WPが自動生成)
現在の静的ページの.htaccess(ルートディレクトリ直下)
SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode SetEnvIf Request_URI ".*" AllowXmlrpc SetEnvIf Request_URI ".*" AllowCountry SetEnvIf Request_URI ".*" AllowRestApi <Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> # wwwなし に統一 RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] # httpsに統一 RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # index.php(.html)なしに統一 RewriteCond %{THE_REQUEST} ^.*/index.(html|php) RewriteRule ^(.*)index.(html|php)$ https://%{HTTP_HOST}/$1 [R=301,L]
現在のWPページの.htaccess(blogディレクトリ直下)
# BEGIN WordPress # "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は # 動的に生成され、WordPress フィルターによってのみ修正が可能です。 # これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase /blog/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L] </IfModule> # END WordPress #BEGIN COCOON HTTPS REDIRECT HTACCESS <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP:X-Forwarded-Proto} !=https RewriteCond %{HTTP:CloudFront-Forwarded-Proto} !=https RewriteCond %{HTTPS} !=on [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule> #END COCOON HTTPS REDIRECT HTACCESS
「//」の位置が違いますが、https://teratail.com/questions/148648 と同じだと思います。
回答1件
あなたの回答
tips
プレビュー