2

私は正常に動作する次のコードを持っています

RewriteRule ^articles/([^/\.]+)/?$ articles.php?pid=$1 [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+articles\.php\?pid=([^\s&]+) [NC]
RewriteRule ^ http://www.mydomain.com/articles/%1? [R=301,L]

問題は、ページング システムがあり、このようなページング システムの別の変数をそのページに送信することです。

&pageNum_getArticles=1#1

私はすでに次のことを試みましたが、私が思うハッシュと混同されます

RewriteRule ^articles/([^/\.]+)/?$ articles.php?pid=$1&pageNum_getArticles=$2 [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+articles\.php\?pid=([^\s&]+)&pageNum_getArticles=([^\s&]+) [NC]
RewriteRule ^ http://www.mydomain.com/articles/%1/%2? [R=301,L]
4

1 に答える 1

1

情報をありがとう。これに関する解決策はありますか、それともページング システムを変更する必要がありますか?

はい。

一緒に機能する2セットの書き換えルールがあります。最初のルールは、クエリ文字列のない見栄えの良い URL を取得し、内部でそれを php スクリプトに書き換えます。2 番目のルールは、見栄えの悪い php スクリプト URI を取得し、ブラウザーをリダイレクトして、見栄えの良いものを使用します。最初のセットは正しいです。ただし、2 番目のセットは同じルールを使用してスクリプトにルーティングします。$2一致を後方参照しないため、ページング用に別のグループを作成する必要があります。

試す:

# second match here---------------v
RewriteRule ^articles/([^/.]+)/([^/.]+)/?$ articles.php?pid=$1&pageNum_getArticles=$2 [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+articles\.php\?pid=([^\s&]+)&pageNum_getArticles=([^\s&]+) [NC]
RewriteRule ^ http://www.mydomain.com/articles/%1/%2? [R=301,L]

ページングを使用しないルールを引き続き使用する場合は、ページングを使用するルールのに非ページング ルールを設定する必要があることに注意してください。

さらに、何らかの理由でページングが URL フラグメントなしでは機能せず、フラグメントが常にページング番号と同じになる場合は、それをリダイレクトの最後に追加できます。ただし、 faa が提案したような NE が必要です。

RewriteRule ^ http://www.mydomain.com/articles/%1/%2#%2? [R=301,L,NE]
于 2013-02-27T07:31:57.827 に答える