0

.htaccess に次の行があります。

RewriteRule ^newpdfs/(.*)\.pdf /getnewpdf.php?pdf=$1

getnewpdf.phpダウンロードされるファイル名にセッションからユーザーの名前を追加するためのスクリプトです。ただし、セッションが作成されておらず、ユーザーの名前をデータベースから取得する必要があるシナリオがあります。そのため、ID を渡す必要があります (必要な場合)。私はこれを持っています:

RewriteRule ^newpdfs/(.*)\.pdf?id=(.*) /getnewpdf.php?pdf=$1&id=$2

ただし、ID クエリは無視されます。クエリ文字列も渡すにはどうすればよいですか?

4

3 に答える 3

2

(Last) フラグがありませLん。既存のクエリ文字列を追加するには QSA (Query String Append) が必要です。コードは次のようになります。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^newpdfs/([^.]+)\.pdf$ /getnewpdf.php?pdf=$1 [L,NC,QSA]
于 2013-05-31T14:51:45.460 に答える
2

QSA既存のルールにフラグを追加するだけです:

RewriteRule ^newpdfs/(.*)\.pdf /getnewpdf.php?pdf=$1 [QSA]

置換 URI にクエリ文字列が含まれている場合、RewriteRule の既定の動作では、既存のクエリ文字列が破棄され、新しく生成されたクエリ文字列に置き換えられます。[QSA] フラグを使用すると、クエリ文字列が結合されます。

ここでのさらなる参照: http://httpd.apache.org/docs/2.4/rewrite/flags.html

于 2013-05-31T14:51:51.890 に答える
1

ルールの末尾に [QSA] を追加します。これは、クエリ文字列を追加することを意味します

于 2013-05-31T14:50:23.287 に答える