URL .htaccess вырезается через пробел (я использую Codeigniter) - PullRequest
2 голосов
/ 02 января 2009

Я использовал следующий код для сопоставления 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 не дает никаких других результатов.

У кого-нибудь есть идеи и / или решения, почему это происходит?

Большое спасибо,

Ice

Ответы [ 2 ]

2 голосов
/ 02 января 2009

Я исправил:

Добавлено в 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

0 голосов
/ 08 марта 2013

Что сработало у меня без изменения файла httpd:

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

Обратите внимание, что правило не захватывает конец строки.

...