我正在我的一个htdocs文件夹中的.htacess文件夹中进行重写。 rewriterule看起来像这样:
RewriteRule ^index/(blah)/(blah2)/(blah3)..../(blah20)
^^^上面的代码看起来很糟糕 - 不用担心。 无论如何,我之前听说$ {20}是在正则表达式中访问第20个匹配组的正确方法,但即使在regex101中我的第20个匹配组匹配blah20,每当我打印出第20个捕获组时,我只得到$ { 20}。 为什么是这样?我是否正确访问了两位数的匹配组?
编辑 - 真正的重写:
RewriteRule ^a/([\d]*)/(b/([\d]{2}:[\d]{2}:[\d]{2})/?)?(c/(\w*)/?)?(d/([\w]
{6})/?)?(e/([\w]{6})/?)?(f/([\w]{6})/?)?(g/([\w]{6})/?)?(h/([\w]{6})/?)?
(i/([\w]{6})/?)?(j/([\w]{6})/?)?(k/([\w]{6})/?)?(l/([\w]{6})/?)?(m/([\w]
{6})/?)? /index.php?a=$1&b=$3&c=$5&d=$7&e=$9&f=${11}&g=${13}&h=${15}&i=${17}&
j=${19}&k=${21}&l=${23}&m=${25} [L]
答案 0 :(得分:0)
例如this:
module.exports = {
getConnections: function () {
var obj = xlsx.parse('xxxxx.xls'); // parses a file
var connection = {
customer: "",
Type: "",
ip: "",
user: "",
pass: ""
}
var connections = [];
//loop through all rows in the sheet
for (var j = 0; j < obj[0]['data'].length; j ++) {
//add the row to the rows array
//rows.push(sheet['data'][j]);
if (obj[0]['data'][j].length > 4) {
var a = connection;
connection.customer = obj[0]['data'][j][0];
connection.Type = obj[0]['data'][j][2]
connection.ip = obj[0]['data'][j][3]
connection.user = j;
connections.push(connection)
//console.log(connection)
}
}
console.log(connections)
return connections;
}
}
将匹配网址中的第6个文件夹。
答案 1 :(得分:0)
您不能使用大于9 as per official mod_rewrite documentation的反向引用号。
来自手册:
RewriteRule反向引用:这些是
$N (0 <= N <= 9)
形式的反向引用。$1
到$9
可以从RewriteRule访问模式的分组部分(括号中),RewriteRule受当前RewriteCond
条件集的约束。$0
提供对该模式匹配的整个字符串的访问权限。
如果你正在处理这么多的反向引用,那么最好将index/
之后的完整URI传递给index.php
并在php代码中使用explode:
RewriteRule ^index/(.+)$ index.php?q=$1 [L,QSA,NC]