0

エンコード可能な文字を含む URL をキャプチャする必要があります。たとえば、+、{スペース}、[、] など。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} ^(.*)(\s|\+|\%)+(.*)$
RewriteRule ^(.*)$ /content/my-rewrite-redirect.php [L]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://mydomain.com/content/$1$1 [QSA,L]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ https://mydomain.com/content/$1 [QSA,L]

(\s|+|\%) - URL でエンコードされているスペース文字と任意の文字をキャプチャするためにこれを試みましたが、http://mydomain.com/vertical%5B1%5D.jpg のような URL はキャプチャしません

お時間をいただきありがとうございます。

4

1 に答える 1

1

あなたが直面している問題は、htaccess に到達する前に URL が Apache によってデコードされている可能性があります。エンコードされた文字を検索する代わりに、URL エンコードされる文字を検索する正規表現を作成してみてください。

例えば:

RewriteCond %{REQUEST_FILENAME} [!@#$%^&*`~\(\)\\/\[\]\{\}\+]+

もちろん、資格のあるキャラクターは他にもたくさんいます...これは単なる例です

于 2012-11-21T16:19:24.320 に答える