2

サイトのリンク構造の再構築に取り組んでいます。

一部の部分では、サイトは次のような実際の php スクリプトで応答するようになりました。

DOMAIN/about-us.php

このような種類の URL を次のように再マップする必要があります (これは単なる例です)。

DOMAIN/about-us.php --> DOMAIN/uk/about-us

これらのページは既にインデックスに登録されているため、新しいリソースへの 301 リダイレクトを使用したいと考えています。

私はそのようなルールを使用しました:

RewriteRule ^/about-us.php$ /uk/company/about-us   [R=301,L]
RewriteRule ^/uk/company/about-us$ about-us.php   [L]

しかし、これは無限ループに陥りました。

私は運がない別の解決策を試しました(私はこれも試しました:.htaccessループを止める方法 - 提案された2番目の方法)。私の環境で機能した唯一のことは、about-us.php の名前を変更してルールを更新することでした。しかし、多くのスクリプトが存在するため、それらすべての名前を変更することは最適なオプションではありません。

4

1 に答える 1

2

これを試してください:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*)\.php [NC]
RewriteRule ^ /%1 [R=301,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule /?([^/]+)/?$ $1.php [L]

ルート フォルダの php に対してのみ機能します。

于 2013-09-03T11:34:13.533 に答える