3

Webサイトにはproducts/フォルダーがあり、その中には大文字のphpファイルがあります。

例: www.example.com/products/BIT-Defendar.php

現在、このURLは何年もの間、そして検索エンジンのいたるところに存在しています。プロダクトマネージャーのミスでした。

しかし、私はこれを修正したいのですが、小文字のURLだけが必要です。

これで問題は解決しますか?CheckSpelling On CheckCaseOnly On (1)

そして、上記とは何が違うのか: (2)

RewriteMap tolowercase int:tolower 
RewriteRule ^(.*)$ ${tolowercase:$1}

(1)を使用すると、すべてが機能します。URLを小文字または大文字で要求します(ただし、検索エンジンに問題がありますか?)

(2)を使用する場合、 products/フォルダー内のすべてのファイルの名前を小文字に変更する必要があります。

- - 編集 - -

私が使用するときRewriteRule、URLが大文字の場合、ドメインルートに転送されます。使用する場合は、すべて問題CheckSpellingありません。CheckCaseOnly

私はこれでテストしました そして私は得ます:

RewriteCond %{REQUEST_URI} [A-Z]    

-この条件が満たされました

RewriteRule (.*) ${tolowercase:$1} [R=301,L]    

-このルールは満たされました。新しいURLはhttp://www.example.com/${tolowercase:products/BIT-Defendar.php }です。

-RewriteRuleオプションのRが原因で、テストが停止します。リダイレクトはステータスコード301で行われます

私のセットアップhttpd.conf

<VirtualHost *:80>
 RewriteMap tolowercase int:tolower
</VirtualHost>
4

1 に答える 1

3

ここの下部に記載されているように、CheckSpellingおよび/またはCheckCaseOnlyディレクティブを使用すると、望ましくない結果が生じる可能性があります。

1, performance issues
2, some files might be skipped
3, some files might be misinterpreted

ルックアップごとにディレクトリとファイルを検索するのはapacheに依存しているため、apacheに修正を許可するのは賢明ではないと思いますが、小文字のマップを使用すると、完全に制御でき、厳密な標準が作成されます。

これが新しいファイルであることを検索エンジンに通知するフラグ[R=301]を追加することをお勧めします。検索エンジンに関連する問題は発生しません。

RewriteMap tolowercase int:tolower 
RewriteRule ^(.*)$ ${tolowercase:$1} [R=301,L]

ファイルは認識されなくなるため、ファイルの名前を変更する必要がありますが、すべてのファイルをスキャンして小文字に変更する簡単なスクリプトを作成できます。

于 2012-11-30T19:06:46.413 に答える