0

次の .htaccess ファイルがあります

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^css/.*$ - [PT]
RewriteRule ^flash/.*$ - [PT]
RewriteRule ^images/user-images/(.*)$ /index.php?image=$1 [QSA]
RewriteRule ^inc/.*$ - [PT]
RewriteRule ^js/.*$ - [PT]
RewriteRule ^swf/.*$ - [PT]

クエリ変数を受け入れて維持するために、行の 1 つを調整する必要があります

RewriteRule ^images/user-images/(.*)$ /index.php?image=$1 [QSA]

これが対象とする URL の例は次のようになります。

http://domain.com/images/user-images/Montreal/private/2012_08_10/YzAbCdE.jpg?lang=fr

lang 変数は常に取り除かれます。上記の URL を機能させ、lang=fr を失わずにhttp://domain.com/images/user-images/Montreal/private/2012_08_10/YzAbCdE.jpgにリダイレクトするにはどうすればよいですか?

ご協力いただきありがとうございます :)

4

1 に答える 1

1

私があなたを正しく理解しているなら、あなたは望む

http://domain.com/images/user-images/path/YzAbCdE.jpg?lang=fr

にマッピングされます

/index.php?image=path%2FYzAbCdE.jpg&lang=fr

これは、書き換えルールとまったく同じです。

RewriteRule ^images/user-images/(.*)$ /index.php?image=$1 [QSA]

すべきです。特に、[QSA] は lang-parameter を保持する必要があります。lang-parameter を取り除きたい場合は、[QSA] の代わりに [QSD] が必要です。

それでもうまくいかない場合は、Apache サーバーが古すぎて QSA を認識していない可能性があります。

ただし、上記の書き換えルールを次のように置き換えることもできます。

RewriteRule ^images/user-images/([^?]*)$ /index.php?image=$1
RewriteRule ^images/user-images/([^?]*)?(.*)$ /index.php?image=$1&$2
于 2012-08-15T17:49:28.600 に答える