.htaccess 如何正确重写此URL?
我正在向我的应用程序添加RESTAPI。REST API位于我的应用程序的/API。我希望正确路由所有请求,包括具有参数的请求。我有以下htaccess规则,这些规则大部分都有效:.htaccess 如何正确重写此URL?,.htaccess,rest,mod-rewrite,url-rewriting,.htaccess,Rest,Mod Rewrite,Url Rewriting,我正在向我的应用程序添加RESTAPI。REST API位于我的应用程序的/API。我希望正确路由所有请求,包括具有参数的请求。我有以下htaccess规则,这些规则大部分都有效: <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L]
</IfModule>
您需要使用查询字符串Append标志,如下所示:
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
根据:
当替换URI包含查询字符串时,默认行为
重写规则的作用是丢弃现有的查询字符串,并替换它
使用新生成的一个。使用[QSA]标志会导致查询
要组合的字符串
考虑以下规则:
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
使用[QSA]
标志,对/pages/123?one=two的请求将映射到
/page.php?page=123&one=two
。如果没有[QSA]
标志,相同的请求
将映射到/page.php?page=123
——即现有查询
字符串将被丢弃
如果您正在执行友好的URL,并且正在捕获整个URI,这就是它的外观,那么只需将其添加到末尾,而不是执行查询字符串<代码>/api/projects/get/1
在代码中,您知道1的最后一个路径是类型(如果存在)。在IMO中,你应该只使用一种方法,不要使它过于复杂。谢谢,QSA标志是这里的关键。
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]