web-dev-qa-db-ja.com

末尾のスラッシュがある場合とない場合でリダイレクトしようとしています

ブログをサブドメインに移動しましたが、サブドメインではすべてのカテゴリが変更されたため、古いドメインからサブドメイン(異なるホスティング)への301のリダイレクトのリストを作成したいと思います。

私が抱えている問題は、末尾のスラッシュを追加することです。そのため、すべてのURLを2回リストする必要はありません。

私はこれを/blog/.htaccessで試しました:

RewriteEngine On

#RewriteRule ^(.*)$ http://domain.com/blog/$1/ [L,R=301] 

Redirect 301 /blog/test/ https://new.domain.com/test/
Redirect 301 /blog/example/ https://new.domain.com/example/
(etc...)

ただし、ブラウザが検出するリダイレクトが多すぎるため、これは機能しません。

ここでの適切な構文は何ですか?

私も試しました:

RedirectMatch /blog/test/?$ https://new.domain.com/test/ [L,R=301] 

しかし、それはまったく機能していないようです。

1
Guerrilla

以下の構文を使用してください

_RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !example.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://example.com/$1/ [L,R=301]
_

_RewriteCond %{REQUEST_FILENAME} !-f_は、既存のファイルにスラッシュが追加されないようにします。

_RewriteCond %{REQUEST_URI} !example.php_は、書き換えてはならないサンプルURLを除外します。

RewriteCond%{REQUEST_URI}!(。*)/ $は、URLに末尾のスラッシュが含まれていない場合に最終的に起動します。これが私たちが望むすべてです。次に、これらのURLを末尾のスラッシュでリダイレクトする必要があります。

RewriteRule ^(.*)$ http://example.com/$1/ [L,R=301]は、末尾のスラッシュが追加されたURLに301をリダイレクトします。 domain.comを自分のURLに置き換える必要があります。

1
sanjayparmar

動作するように見える構文は次のとおりです。

RedirectMatch 301 /blog/test/?$ https://new.domain.com/test/
0
Guerrilla