1

友よ、これは私にとって複雑な問題です。私はこれについて何度も調査しましたが、ついにあなたにたどり着きました(解決策が得られることを願っています)。次のような製品 URL がありました。

/product_info.php/products_id/75

SEO に従って、キーワードが豊富な URL が必要だったので、products.php ファイルにスラッグを追加し、URL を次のように変更しました。

/product_info.php/products_id/75/product-title

しかし、これも理想的な URL ではありません。私はこれを次のように望んでいました:

domainname.com/products/product-title/75

.htaccess ファイルに加えた変更は次のとおりです。

RewriteRule ^products/([A-Za-z0-9-]+)/([0-9]{2})/?$ product_info.php?products_id=$2=$1 [L]
RedirectMatch 301 ^/product_info.php/products_id/([0-9]{2})/([A-Za-z0-9-]+)$ http://www.livevaastu.com/products/$2/$1

問題は、古い URL (スラッグがない) が Google によってインデックス化されていることです。そして、それらの古いものを新しいものにリダイレクトする方法がわかりません。また、製品ページがたくさんあるので、1つずつリダイレクトできませんでした. あなたたちは天才です。どうにかして助けてくれませんか。(私を笑わずに)。M は開発者ではありません。

4

1 に答える 1

0

/product_info.php/products_id/75 の古い URL から product_info.php?products_id=$2=$1 を生成することはできません。それらには製品タイトル (「slug」) がないためです。

一つには、product_info.php?products_id=$2=$1 は意味がありません。それはタイプミスですか?そのクエリ文字列のキーと値のペアは何ですか?? これは、products_id=$1&product_title=$2 のようになり、mod_rewrite の一致から派生した各「値」が既知の「キー」に割り当てられます。これは、値を見つけるために $_GET または $_REQUEST で使用できるものです。

議論に基づいて、ここで達成しようとしていることを支援するために編集します。

古い URL を新しい "pretty" URL に導くには、PHP を使用する必要があります。前述のとおり、URL には製品名を推測するための十分な情報がありません。しかし、「タイトル」$_GET パラメータが存在するかどうかを確認するために、各ページの上部 (つまり、ヘッダー ファイル内) に何かを簡単に配置できます (二重の等号をクリーンアップして、適切なキーと値のペア)。これは次のようになります。

<?php
if( !isset( $_GET['product_title'] ) ) {

   // Code here to look up $product_title from the $product_id, presumably in a DB

   header("HTTP/1.1 301 Moved Permanently");
   header("Location: /products/$product_title/$product_id");
   exit();
}
于 2013-01-01T04:23:24.083 に答える