.htaccess url rewrite remove 2 id
URLの2つのパラメータIDを削除して番号を表示することは可能ですか?現在私はこのようなURLを持っています:
http://localhost/photo_gallery/public/product_configurator.html?prometheus_id=10082&id=73
必要なURL:
http://localhost/photo_gallery/public/product_configurator.html/10082&73
.htaccess
RewriteEngine on
RewriteRule ^(.*).html $1.php RewriteRule ^product_configurator.php/(\d+)$ product_configurator.php?prometheus_id=$1&id=$2 [NC,L]
それは可能ですか?
回答
私は、(あなたのディレクティブを見て)あなたの.htaccessファイルがにあると仮定しています/photo_gallery/public/.htaccess。
RewriteRule ^product_configurator.php/(\d+)$ product_configurator.php?prometheus_id=$1&id=$2 [NC,L]
これは近いですが、キャプチャサブパターン(つまり(\d+))は1つしかありませんが、置換文字列には2つの後方参照(つまり$1と$2)があります。また、一致するのは数字()のみですが、一致させたいパターンには数字以外の数字が含まれています。したがって、上記は単に一致しません。\d&
.php拡張子も導入しましたが、投稿したURLの例はで構成されています.html。私はあなたがすでに書き直し.htmlていると仮定しています.php(あなたの指令によって示唆されているように)。ただし、これは1つのディレクティブで直接行う必要があります。
拡張子を.htmlから.php(つまりRewriteRule ^(.*).html $1.php)に変更するように書き直すと、一致させようとしている情報も上書きされます。これはURLパスに含まれているためです。
代わりに次を試してください。
RewriteEngine On
# Rewrite "product_configurator.html/10082&73"
RewriteRule ^(product_configurator)\.html/(\d+)&(\d+)$ $1.php?prometheus_id=$2&id=$3 [L]
product_configuratorリクエストから文字列を($1後方参照に)キャプチャして、置換文字列の繰り返しを保存します。$2そして$3、その後の前と後の値を表す&URLパスで。
NC潜在的な「重複コンテンツ」の問題を防ぐために、フラグを削除しました。大文字と小文字を区別しない一致が特に必要な場合を除いて、NCフラグは避ける必要があります。
その後...
# Rewrite other ".html" requests to ".php"
RewriteRule (.+)\.html$ $1.php [L]