Php 如何使用.htaccess将漂亮的URI映射到各个API?

Php 如何使用.htaccess将漂亮的URI映射到各个API?,php,apache,.htaccess,mod-rewrite,uri,Php,Apache,.htaccess,Mod Rewrite,Uri,比如说我想要URI,比如, www.domainname.com/horses/意大利语/ www.domainname.com/cats/posian/ 相应的API为:, GetHorseDetails.php GetCatDetails.php 它们位于/api/fetch/…php下 我面临的问题是,我无法正确地构建重写规则 当我将API放入根文件夹并使用, 重写规则^(.*)$GetHorseDetails.php/$ 我可以做一个GET domainname.com/horses/意

比如说我想要URI,比如, www.domainname.com/horses/意大利语/ www.domainname.com/cats/posian/

相应的API为:, GetHorseDetails.php GetCatDetails.php

它们位于/api/fetch/…php下

我面临的问题是,我无法正确地构建重写规则

当我将API放入根文件夹并使用, 重写规则^(.*)$GetHorseDetails.php/$

我可以做一个GET domainname.com/horses/意大利语/并点击API

综上所述,, 1) 我需要绑定参数。 2) 我需要能够使用.htaccess中的相对路径访问API

技术上, domaninname.com/horses/意大利语应该点击root/api/fetch/gethorsedestails.php

我非常感谢你在这方面的任何帮助,因为我试着挖掘了很多东西,但都没有用


问候。

没有快速的答案,所以我决定忘记我积累的一切,只做实验

维奥拉,这真有效

重写规则^horses/意大利语/?$api/fetch/gethorsedestails.php[NC,L]


显然,问题在于相对路径。没有必要在名称前加上“/”之类的字。而且不需要使用Alias将URL映射到文件系统。

没有快速的答案,所以我决定忘记所有我积累的内容,只做实验

维奥拉,这真有效

重写规则^horses/意大利语/?$api/fetch/gethorsedestails.php[NC,L]


显然,问题在于相对路径。没有必要在名称前加上“/”之类的字。无需使用Alias将URL映射到文件系统。

喝杯热咖啡,从这里开始:哈哈!谢谢欧文,这个Apache2.4有点笨拙。我查阅了他们的文档,浪费了很多时间试图理解这些标志。我主要关心的是将其重定向到子目录中的php文件。最初,我试图使用Alias将其映射到我的文件系统。但是它没有成功地将URI映射到一个文件。我感觉到了你的痛苦。我不是mod rewrite的专家(从你必须表达自己的方式来看,这似乎很可怕)。在过去,我“懒散地”解决了这个问题:通过mod rewrite:获取整个路径,并将其传递给“redirector.php”php脚本,该脚本负责正确的重定向。所以它们都使用相同的PHP脚本。这样做的好处是,您可以使用PHP而不是疯狂的mod重写,并保留漂亮的URL。在PHP中,更容易解析它,并相应地采取行动(至少对我来说)。请求的到达方式如下:www.blabla.com/redirector.php?orgrequest=…/…/…是的,甚至我以前也做过同样的事情。将所有传入的请求定向到一个特定的php文件,并解析该请求,然后使用诸如explode或get之类的方法提取参数并匹配它们,然后将它们重新定向到各自的API。优点:简单。缺点:当你有很多类并且你遵循REST将它们重定向到端点时,路由是昂贵的。喝杯热咖啡,从这里开始:哈哈!谢谢欧文,这个Apache2.4有点笨拙。我查阅了他们的文档,浪费了很多时间试图理解这些标志。我主要关心的是将其重定向到子目录中的php文件。最初,我试图使用Alias将其映射到我的文件系统。但是它没有成功地将URI映射到一个文件。我感觉到了你的痛苦。我不是mod rewrite的专家(从你必须表达自己的方式来看,这似乎很可怕)。在过去,我“懒散地”解决了这个问题:通过mod rewrite:获取整个路径,并将其传递给“redirector.php”php脚本,该脚本负责正确的重定向。所以它们都使用相同的PHP脚本。这样做的好处是,您可以使用PHP而不是疯狂的mod重写,并保留漂亮的URL。在PHP中,更容易解析它,并相应地采取行动(至少对我来说)。请求的到达方式如下:www.blabla.com/redirector.php?orgrequest=…/…/…是的,甚至我以前也做过同样的事情。将所有传入的请求定向到一个特定的php文件,并解析该请求,然后使用诸如explode或get之类的方法提取参数并匹配它们,然后将它们重新定向到各自的API。优点:简单。缺点:当您有很多类并且您遵循REST将它们重定向到端点时,路由是昂贵的。