在我的functions.php中我有重写规则,不包括以数字开头的字符串(如果我理解正确的话)所以现在如果我有链接$ slug / 123anything /它排除它 - 代码:
add_rewrite_rule(
"^$slug/(?![\d]+\-)(.+)$",
'index.php?post_type=xxx',
'top'
);
但我需要的是同样的规则,只排除单个字符串/文件夹深度 - 例如,如果链接是$ slug / anything /或$ slug / 123anything / - 它应该被排除但是如果链接是$ slug / anything / anything或$ slug / anything / anything / ...然后它应该重写。
我尝试了这段代码和一些变化,但没有运气
add_rewrite_rule(
"^$slug/(?!(\w+)/?$)(.+)$",
'index.php?post_type=xxx',
'top'
);
我也尝试过代码,但是在所有情况下都没有 - 当我在第一个字符串/文件夹深度($ slug / anything / anything)之后进行单个查询时,它无法正常工作,但是如果我有两个或更多深度( $ slug / anything / anything / anything ...)它运行正常。
add_rewrite_rule(
"^$slug/(?![.+]/$)(.+)/(.+)$",
'index.php?post_type=xxx',
'top'
);
如果有帮助 - 应该重写的网址有查询字符串,并且始终以数字结尾(最后没有/)。所以也许好的方法是尝试不排除,但只有当链接有查询sting或以数字结尾而没有“/".
时重写如果有任何帮助和建议,我将不胜感激。谢谢!
答案 0 :(得分:0)
为了防止遇到类似问题的人,我找到了解决方案以检查URL是否包含查询字符串,如果是,则应用重写规则,在我的情况下,它完美无缺。
public download(id: string): Observable<any> {
//let oReq = new XMLHttpRequest();
// let options = new RequestOptions({ responseType: ResponseContentType.Blob });
let params = new URLSearchParams();
let headers = new Headers();
headers.append('x-access-token', this.auth.getCurrentUser().token);
headers.append('sale_id', id);
headers.append('Content-Type', 'application/json;charset=UTF-8');
headers.append('responseType':'arraybuffer');
return this.http.get(Api.getUrl(Api.URLS.download), {
headers: headers,
responseType: ResponseContentType.Blob,
}).map(res => res.blob())
}