Regex 省略;“公众”;从URL使用.htaccess重写
我有一个当前的REST API,其中URL看起来如下所示: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的请
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文件,希望他们允许在命令上格式化。