仕様:
- 言語 : PHP
- DB : MYSQL
- ウェブサイトの種類 : ダイナミック
- .htaccess の使用率 : 高
- 有効な Apache モジュール: mod_rewrite および mod_spelling
コードを書き換える:
RewriteRule ^(.+)-(.+)~(.+)\.html$ gallery-model.php?gallnm=$1&newnm=$2&modelid=$3
解決しなければならない問題が 2 つあります。
1. URL の重複の問題 2. URL に追加されるクエリ文字列
問題 #1: URL の重複の問題
SEO-MOZ レポートによると、同じコンテンツを持つ 2 つの異なる URL があります。例えば、
URL の構造 : http://www.example.co.uk/galleryname-modelname~modelid.html
URL 1 : http://www.example.co.uk/Shoes-Blackmamba~23.html
URL 2 : http://www.example.co.uk/shoes-blackmamba~23.html
URL 1 はキャメル ケースのテキストで、URL 2 は小文字のテキストであることに注意してください。
gallery-model.php ファイルは、上記の URL #1 および #2 に表示されるように、MYSQL データベースに格納された数百のレコードを作成します。
ノート) :
- クエリ文字列を解析するのに妥当な変数はすべて「strtolower」を使用しています。ダブルチェックして確認しました。
- 上記のREWRITE CODEを確認すると、最後に [nc] が表示されます。操作しようとすると、500 内部サーバー エラーが返されます。
同じ内容で異なる URL の URL の重複を防ぐ方法は?
問題 #2: URL に追加されるクエリ文字列
URL を SEF に書き換える機能を実行するREWRITE CODEを確認してください。一部の URL は正常に機能しますが、残りはクエリ文字列を追加します。たとえば、
http://www.example.co.uk/shoes-blackmamba~23.html?gallnm=シューズ&newnm=ブラックマンバ&modelid=23
ノート) :
上記の URL を確認すると、クエリ文字列にキャメルケースが含まれていることがわかります。
REWRITE CODEが適用されているため、「URL?」の後に変数名と現在の値を追加しないでください。しかし、そうです。
- trim() が使用され、mysql ケースの変更は適用されません。
このクエリ文字列を削除するには?
問題#1と#2の解決策を試しました:
- mod_spelling.c を有効にしましたが、500 内部サーバー エラーで返されました。
- いくつかの Google 検索がうまくいかない場合、URL を強制的に小文字にします。
お返事をお待ちしております。