2016-07-12 7 views
1

私は、API呼び出しを別のインデックスファイルにリダイレクトしようとするのに苦労しています。APIが.htaccessのURLにある場合、別の `index`ファイルにリダイレクトしますか?

URLの[domain-name]/API/*を持つすべてのURLを別のスクリプト:API_index.phpにリダイレクトしたいとします。

私は私の.htaccessファイルに次のようにそれをやってみました:

RewriteEngine on 

RewriteCond %{REQUEST_URI} /API/ 
RewriteRule . API_index.php [L] 

RewriteRule ^(font-awesome|fonts|ajax|tools|log|documentation)($|/) - [L] 
RewriteRule !\.(js|ico|gif|jpg|png|css|html|swf|mp3|wav)$ index.php [NC,L] 

this websiteこのURLによると、http://abayocms.dev/API/test、一致している必要がありますが、私はまだindex.phpにナビゲートされているのですか?

ANSWER

はどうやら.htaccessの[L]はURLのみを超える現在の反復を停止します。 最初のrewriteCond + Ruleを使用してAPI_indexファイルにリダイレクトすると、サーバーは新しいURL([some domain]/API_index.php)で新しい繰り返しを開始します。

これは、このように、このシナリオでは、独自のルールを必要とindex.php

にリダイレクトされますまだ私の最後のルールによってcatched及びます:

RewriteEngine on 

# Prevents redirecting API_index.php to index.php 
RewriteRule ^API_index.php$ - [L] 

RewriteCond %{REQUEST_URI} /API/ 
RewriteRule . API_index.php [L] 

RewriteRule ^(font-awesome|fonts|ajax|tools|log|documentation)($|/) - [L] 
RewriteRule !\.(js|ico|gif|jpg|png|css|html|swf|mp3|wav)$ index.php [NC,L] 

RewriteRule ^API_index.php$ - [L] 

合計ファイルは次のようになります

@starkeenに大きな感謝の意を表します!

+1

した後で次のように追加してみてください、/API_index.php手付かずを渡す必要が

は、他のルールはありますか? – starkeen

+0

いいえ、これはすべてです – Abayob

答えて

1

/API_index.phpは第3のルールと一致し、/index.phpに書き換えられます。あなたはRewriteEngine on

RewriteRule ^API_index.php$ - [L] 
+0

しかし、それは3番目のルールには間違いないでしょうか?それで私は[L]を後ろに置いたのです。そして、あなたのルールのいくつかのポジションを試しました。どこに配置するかを示すために、.htaccessファイル全体をソリューションに入れてください。 – Abayob

+0

内部リダイレクトのために起こっていますが、あなたが思っていることはしません。現在の反復のみを停止します。 '/ API_index.php'を提供するためにexaple'/API/'が'/API_index.php'に書き直されるため、サーバはhtaccessをもう一度読み込み、今度はURIが最後のルールと一致します。 – starkeen

+1

Aaaaah、それはどのように動作!それを私に説明してくれてありがとう:D – Abayob

関連する問題