2

htaccess ファイルにいくつかの書き換えルールを追加しようとしていますが、いくつかの点で少し問題があります。

私は現在、次の設定をしています (ビットは異なるサイトからのものなので、一貫性がない場合は申し訳ありません!):

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /search\.php\?part=([^&]+)\ HTTP/ 
RewriteRule ^search\.php$ http://test.dev/part/%1? [R=301,L] 
RewriteRule ^part/(.+)$ /search.php?part=$1 [L]

これにより、 test.dev/search.php? part=foo に移動でき、URL を test.dev/part/foo書き換え/リダイレクトします。これは正常に機能し、正しいコンテンツが表示されます。

ただし、test.dev/search.php?part=foo,bar に移動することもでき、URL をtest.dev/part/foo,barに書き換え/リダイレクトします- これは正しいコンテンツを表示しますが、そうではありませんURLをどのように見せたいか。

'part' の後の URL の内容を考慮し、カンマが見つかった場合はカンマとその後を削除する方法はありますか?

コードで「foo」と「bar」を読み取って、これら 2 つのオプションの正しいコンテンツを表示する必要がありますが、URL でtest.dev/part/fooを表示する必要があります(foo はurl)。

4

1 に答える 1

1

を次のように置き換えます。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\s/+search\.php\?part=([^&,\s]+) [NC]
RewriteRule ^ /part/%1? [R=301,L] 

RewriteRule ^part/(.+)$ /search.php?part=$1 [L,NC]

更新:カンマの後の文字列をクエリ文字列にキャプチャするには

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\s/+search\.php\?part=([^&,\s]+)(?:,([^&,\s]+))? [NC]
RewriteRule ^ /part/%1?q=%2 [R=301,L] 

RewriteRule ^part/(.+)$ /search.php?part=$1 [L,NC,QSA]
于 2013-09-17T09:17:17.657 に答える