我有一个当前的REST API,其中URL过去如下所示:
#include <fstream>
#include <iostream>
#include <string>
int main() {
// Read entire file into a single string.
std::ifstream file_stream("text.txt");
std::string file_contents(std::istreambuf_iterator<char>(file_stream),
std::istreambuf_iterator<char>());
unsigned count = 0;
std::string substr = "USER";
for (size_t i = file_contents.find(substr); i != std::string::npos;
i = str.find(substr, i + substr.length())) {
++count;
}
}
我已将网址结构更新为:
example.com/public/products
example.com/public/products/123
问题是此REST API的当前用户只能连接到“公共”URL,因此此更新会给他们404错误。如何向我的重写添加规则,以便在没有“公共”的情况下处理带有“公共”的URL的GET请求。
example.com/products
example.com/products/123
如何为我编写一个重写规则呢?
答案 0 :(得分:0)
<强> htaccess的:强>
RewriteEngine On
RewriteRule ^public/(.*)$ $1 [R=301,L]
您可以在此处进行测试:http://htaccess.madewithlove.be/
正则表达式:
^
匹配字符串的开头(在这种情况下为URL路径)。
public/
匹配字符串&#34; public /&#34;。
(.*)
括号使这成为一个捕获组; .
匹配除换行符之外的任何字符; *
匹配前面标记的零个或多个。
$
匹配字符串的结尾。
输出网址(包含捕获组参考号):
$1
:插入捕获组#1的内容
选项:强>
[R=301,L]
:执行301 [R]edirect并指出这是[L] ast规则,从而立即停止重写过程。
Apache Module mod_rewrite文档:http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html