質問

わかりましたので、カスタムPHPカートのページURLを書き直しています。

次のルールがあります。

RewriteRule ^category/([0-9]+)/([a-z-]+)$ /store.php?cat=$1 [L]
RewriteRule ^product/([0-9]+)/([a-z-]+)$ /product.php?id=$1 [L]

これらを使用すると、example.com/product //product-slugなどのURL構造を使用できます。

その部分は大丈夫です。私は他の方向にどのような選択肢があるのだろうと思っています。古いURLのリダイレクトリクエストを新しいURLにリダイレクトします。たとえば、誰かが /product.php?id=2に行くと、 /2 /スラッグにリダイレクトしたいです。

これを成し遂げる方法はありますか?

簡単なリダイレクトを試しましたが、うまくいきませんでした。

Redirect 301 ^/store\.php\?cat=16$ http://www.example.com/category/16/category-slug
役に立ちましたか?

解決 2

私はこれを別の方法で解決しました:store.phpファイルを変更して。

出力を見ました print_r($_SERVER) 通常と書き換えられたURLの両方をpingした後。見つけた $_SERVER['SCRIPT_URL'] 通常のURLがヒットしたときに「/store.php」が含まれ、書き換えられたURLがヒットしたときに書き直されたパスが含まれています。

これは、簡単なテストを行い、適切にリダイレクトできることを意味します。

if ($_SERVER['SCRIPT_URL'] == "/store.php") {
    // run some code that will generate the url
    $rewrittenURL = generateURL();
    // then add:
    header("HTTP/1.0 301 Moved Permanently"); // tell spiders this is permanent
    header("Location: $rewrittenURL");
}

他のヒント

リダイレクトは、正規表現ではなくURLプレフィックスのみを取ります( /store.phpまたは /store)

Redirectmatchを試す必要があります:

RedirectMatch 301 ^/store\.php\?cat=16$ http://www.example.com/category/16/category-slug

また、A /で始めることになっていますか?よくわかりません(たとえば、上記の上記のエントリはスラッシュなしで始まります)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top