当API在带有.htaccess的URL中时,重定向到不同的`index`文件?

时间:2016-07-12 07:35:57

标签: .htaccess mod-rewrite

我正在努力将API调用重定向到不同的索引文件。

我想将网址中包含[domain-name]/API/*的所有网址重定向到其他脚本: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此网址,http://abayocms.dev/API/test应该匹配,但我仍在导航到index.php?

ANSWER

显然.htaccess [L]只停止当前对URL的迭代。 一旦我使用我的第一个rewriteCond +规则重定向到API_index文件,服务器就会使用新的URL启动一个新的迭代,即[some domain]/API_index.php

这会被我的上一条规则捕获,但仍会被重定向到index.php

因此,这种情况需要自己的规则:

RewriteRule ^API_index.php$ - [L]

总文件如下:

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]

非常感谢@starkeen的答案!

1 个答案:

答案 0 :(得分:1)

这是因为/API_index.php与第3条规则匹配,并被重写为/index.php

您需要保持/API_index.php不变,请尝试在RewriteEngine on之后添加以下内容

RewriteRule ^API_index.php$ - [L]