2

次のコードを使用して、https ://live.example.comをhttp://example.com/apiにマップしました。

Options +FollowSymLinks

RewriteEngine On 

RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} ^live\.example\.com [NC]
RewriteRule (.+)$ "http://example.com/api/$1" [L,P]

次の URL:

https://live.example.com/userlinks/xml/John%20James/MvPjeUTo15/

次の場所にマップすることを想定しています:

http://example.com/api/userlinks/xml/John%20James/MvPjeUTo15/

代わりに、次のようにマップします。

http://example.com/api/userlinks/xml/John

だから、スペースでそれをカットするようです。Codeigniter フレームワークを使用していますが、そこに問題があるかどうかはわかりません。

また%20、URL バーにスペースを使用したり、スペースを使用したりしても、異なる結果は得られません。

なぜこれが起こるのか、誰にでもアイデアや解決策はありますか?

どうもありがとうございました、

4

2 に答える 2

2

私はそれを修正しました:

apache2.conf (httpd.conf) に追加:

RewriteMap escapemap int:escape 

.htaccess:

Options +FollowSymLinks

RewriteEngine On 

RewriteCond %{HTTPS} =on
RewriteCond "%{HTTP_HOST}" "^live\.domain\.com" [NC]
RewriteRule "(.*)$" "http://domain.com/api/${escapemap:$1}" [L,P]

ソース: http://www.nabble.com/Re%3A-Re-users%40httpd--writeRule%2C--P--and-space-on-URL-p15632475.html

于 2009-01-02T14:56:44.330 に答える
0

httpdファイルを変更せずに、私にとってうまくいったこと:

RewriteRule ^(.+) http://domain.com/api/$1 [R=302,NC]

ルールが行末をキャプチャしていないことに注意してください。

于 2013-03-08T00:55:16.163 に答える