2017-05-05 12 views
0

product.php?product=[variable-id]からitem/[variable-id]にリダイレクトする最良の方法は何ですか?Mod URL書き換え

例えば:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/product\.php$ 
RewriteCond %{QUERY_STRING} ^product=([0-9]*)$ 
RewriteRule ^(.*)$ http://example.com/item/%1.php [L,R=301] 

が、これは

+0

フレームワークまたは手続き型のPHPアプローチを使用していますか? – Demonyowh

+0

'header( 'Location:https://www.example.com/blahblah/'。$ variable); ' –

+0

フレームワークはありません。はい、手続き型のPHPアプローチを使用しています。 –

答えて

1

は、ルートディレクトリの.htaccessファイルにこのコードを入れて...動作していない:product.php?product=45私はこのような何かを試してみましたitem/45

へ。

RewriteEngine On 
RewriteCond %{THE_REQUEST} ^GET\ /product\.php\?product=([^\s&]+) [NC] 
RewriteRule ^product\.php$ /item/%1? [R,L] 
RewriteRule ^item/([^/]+)?$ /product.php?product=$1 [NC,L] 

すべてはそれが必要として動作するとき、あなたはR=301(永久リダイレクト)とRを交換することができます。

1

これは「最善の方法[*]item/[variable-id]product.php?product=[variable-id]をリダイレクトするために、productは常に最初のURLパラメータであり、[variable-id]が存在し、0〜9の数字でのみ構成されていなければなりません。これは、あなたはすべてがOK取り組んでいるを確認しただけで後は(永久)301302(一時的に)変更後、永久的なリダイレクトであることを意図している場合

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^product=(\d+) 
RewriteRule ^product\.php$ /item/%1 [R=302,L] 

。 301はブラウザでキャッシュされているため、テストする前にブラウザのキャッシュをクリアしてください。

[*]問題の限られた情報に基づいて議論することができます。