1

わかりました、基本的に

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

(タイプミスなし)

呼び出す必要があります

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

これを達成するために、ルート.htaccessにこれがあります

RewriteRule ^http:\/\/(.*)$ \/api\/create.php\?content=http:\/\/$1 [L]

RewriteRule ^https:\/\/(.*)$ \/api\/create.php\?content=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]
4

2 に答える 2

1

URL パスはRewriteRule、特に に//置き換えられる前に正規化され/ます。次のように、代わりに元のリクエストにルールを適用する必要があります。

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

%1によって行われた一致を参照しRewriteCondます。
%{REQUEST_URI}HTTP 要求の最初の行にある実際のクエリです。


または、パスがユーザー エージェントまたはプロキシによって同様に正規化される可能性があるため、厳密さを緩めて/、スキームと の後に単一を受け入れます。//

于 2011-03-01T12:35:00.397 に答える
0

これはリダイレクトループを導入しませんか?:

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

それを使って何を達成したいですか?

于 2011-03-01T12:21:33.730 に答える