質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.34%
リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

1回答

125閲覧

.htaccess でスラッシュが2つあるURLを正しい形式にリダイレクトする方法

emi_ono

総合スコア84

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

1クリップ

投稿2024/12/20 04:57

実現したいこと

https://example.net/list//pagename.htmlのようなスラッシュが2つあるURLをhttps://example.net/list/pagename.htmlへとリダイレクトさせたいです。

  • listフォルダ内にはpagename.html以外にも複数のファイルが存在します。フォルダ内全てにこのルールを適用したいです。
  • .htaccessの書き方を教えていただきたいです。
  • .htaccess設定以外により良い方法があれば教えていただきたいです。

前提

https://example.net/list//pagename.htmlとスラッシュが2つある状態でページをブラウザで確認するとCSSが反映されていないhttps://example.net/list/pagename.htmlと同じ内容のページが表示されました。

Google Search Consoleからも指摘があり、SEO的にも問題があるということで改善したいと思い調べていたのですが解決できないので投稿しました。

よろしくお願いします。

.htaccessに追記したコード

# スラッシュが2つあるURLをリダイレクト RewriteEngine On RewriteCond %{REQUEST_URI} ^/list//+(.*)$ RewriteRule ^ /list/%1 [R=301,L]

.htaccessファイル全体

SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode RewriteEngine on RewriteCond %{HTTP_HOST} ^www.example\.net RewriteRule ^(.*)$ https://example.net$1 [R=301,L] RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ https://example.net/$1 [R=301,L] RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] ErrorDocument 404 /notfound.html #.htmlでphpを実行 AddHandler fcgid-script .html #WebP <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_ACCEPT} image/webp RewriteCond %{REQUEST_FILENAME} (.*)\.(jpe?g|png)$ RewriteCond %{REQUEST_FILENAME}\.webp -f RewriteCond %{QUERY_STRING} !type=original RewriteRule (.+)\.(jpe?g|png)$ %{REQUEST_FILENAME}.webp [T=image/webp,E=accept:1,L] </IfModule> <IfModule mod_headers.c> Header append Vary Accept env=REDIRECT_accept </IfModule> AddType image/webp .webp #アクセス拒否 <Files ~ "^(config\.php)$"> deny from all </Files> # スラッシュが2つあるURLをリダイレクト RewriteEngine On RewriteCond %{REQUEST_URI} ^/list//+(.*)$ RewriteRule ^ /list/%1 [R=301,L]

試したこと

  • /list//が含まれるURLが正しい形式にリダイレクトされる方法を調べて.htaccessに追記した。
  • 他のリダイレクトルールよりも上に配置してみた(書く順番を4行目からに変えてみました)。

補足情報

Xサーバーを使用しています

どうぞよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

投稿後、他の方の同じような質問を見つけ.htaccessに下記を追記すると解決できました。

RewriteCond %{THE_REQUEST} // RewriteRule ^ %{REQUEST_URI} [R=301,L]

ありがとうございました。

投稿2024/12/20 05:08

emi_ono

総合スコア84

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.34%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問