Regex 省略;“公众”;从URL使用.htaccess重写

Regex 省略;“公众”;从URL使用.htaccess重写,regex,apache,mod-rewrite,Regex,Apache,Mod Rewrite,我有一个当前的REST API,其中URL看起来如下所示: example.com/public/products example.com/public/products/123 我已将URL结构更新为: example.com/products example.com/products/123 问题是这个RESTAPI的当前用户只连接到“public”URL,所以这个更新会给他们404错误。如何在重写中添加规则,以便在不使用“public”的情况下正确处理对带有“public”的URL的请

我有一个当前的REST API,其中URL看起来如下所示:

example.com/public/products
example.com/public/products/123
我已将URL结构更新为:

example.com/products
example.com/products/123
问题是这个RESTAPI的当前用户只连接到“public”URL,所以这个更新会给他们404错误。如何在重写中添加规则,以便在不使用“public”的情况下正确处理对带有“public”的URL的请求

example.com/public/products -> example.com/products
example.com/public/products/123 -> example.com/products/123

我如何编写一个重写规则来完成这一任务?

.htaccess:

RewriteEngine On
RewriteRule ^public/(.*)$ $1 [R=301,L]
您可以在此处进行测试:


正则表达式:

RewriteEngine On
RewriteRule ^public/(.*)$ $1 [R=301,L]
^

匹配字符串的开头(本例中为URL路径)

public/

匹配字符串“public/”

(.*)

括号使其成为捕获组<代码>匹配除换行符以外的任何字符<代码>*与前面的零个或多个令牌匹配

$

匹配字符串的结尾


输出URL(带有捕获组参考号):

RewriteEngine On
RewriteRule ^public/(.*)$ $1 [R=301,L]
$1
:插入捕获组#1的内容


选项:

RewriteEngine On
RewriteRule ^public/(.*)$ $1 [R=301,L]
[R=301,L]
:执行并指示这是[L]ast规则,从而立即停止重写过程



Apache Module mod_重写文档:

感谢您的建议。我尝试了这个规则。它将我带到应用程序的服务器路径。不起作用。。选项-多视图重写引擎打开#重定向尾部斜杠。。。重写规则^public/(.*)$$1[R=301,L]#处理前控制器。。。重写cond%{REQUEST_FILENAME}-已重写COND%{REQUEST_FILENAME}-f RewriteRule^index.php[L]是我的.htaccess文件,希望他们允许在命令上格式化。