我正在努力将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的答案!
答案 0 :(得分:1)
这是因为/API_index.php
与第3条规则匹配,并被重写为/index.php
。
您需要保持/API_index.php
不变,请尝试在RewriteEngine on
之后添加以下内容
RewriteRule ^API_index.php$ - [L]