書き換えられたURLにリダイレクトします
-
22-10-2019 - |
質問
わかりましたので、カスタム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 /で始めることになっていますか?よくわかりません(たとえば、上記の上記のエントリはスラッシュなしで始まります)
所属していません StackOverflow