мод переписать URL как "http://miniqr.com/http://www.anyurl.com/" (без опечаток) - PullRequest
1 голос
/ 01 марта 2011

нормально, в основном

http://miniqr.com/http://www.anyurl.com/

(без опечаток)

должен позвонить

http://miniqr.com/api/create.php?content=http://www.anyurl.com/

для достижения этого у меня есть это в корне .htaccess

RewriteRule ^ http: \ / \ / (. *) $ \ / Апи \ /create.php \ содержание = HTTP: \ / \ / $ 1 [L]

RewriteRule ^ https: \ / \ / (. *) $ \ / Апи \ /create.php \ содержание = https:? \ / \ / $ 1 [L] * * тысяча двадцать-два

печально то, что когда-то это работало, потом сервер обновлялся, теперь это не работает

кто-нибудь знает почему? (или знаете другой способ сделать это), помощь была бы удивительной

мой .htaccess выглядит примерно так:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^miniqr\.com$ [NC]
RewriteRule ^(.*)$ http://miniqr.com/$1  [L,R=301]

RewriteRule ^(^$|index\.php|robots\.txt|docs|reader\/) - [L]
RewriteRule ^http:\/\/(.*)$ \/api\/create\.php\?content=http:\/\/$1  [L]
RewriteRule ^https:\/\/(.*)$ \/api\/create\.php\?content=https:\/\/$1  [L]

Ответы [ 2 ]

1 голос
/ 01 марта 2011

Путь URL нормализуется до того, как RewriteRule видит его, в частности, // заменяется на /.Вместо этого вы должны применить свое правило к исходному запросу следующим образом:

RewriteCond %{REQUEST_URI} ^/(https?:.*)
RewriteRule ^ /api/create.php?content=%1 [L]

%1 относится к совпадению, выполненному с помощью RewriteCond.
%{REQUEST_URI} - фактический запрос в первой строкеHTTP-запрос.


В качестве альтернативы, будьте менее строгими и примите один / после схемы, а также //, поскольку путь может быть аналогично нормализован пользовательским агентом или прокси.

0 голосов
/ 01 марта 2011

Разве это не вводит цикл перенаправления?:

RewriteCond %{HTTP_HOST} !^miniqr\.com$ [NC]
RewriteRule ^(.*)$ http://miniqr.com/$1  [L,R=301]

Чего ты хочешь добиться с этим?

...