【发布时间】:2016-06-11 18:57:33
【问题描述】:
我是新手。我想要一个在表单上转换 URL 的重写规则:
abc/xyz/myfile?s=t
到
index.php?id=abc&a=xyz&b=myfile.xml&s=t
abc 是固定前缀。 xyz、myfile 和查询字符串被反向引用。
这是 .htaccess 文件:
RewriteEngine On
RewriteRule ^abc/([_0-9a-z]+)/([_0-9a-z]+)\?(.+)$ index.php?id=abc&a=$1&b=$2.xml&$3 [NC]
它不起作用。我使用以下 perl 脚本调试了重写规则:
#!perl
use strict;
use autodie;
$_ = "abc/xyz/myfile?s=t";
if ( /^abc\/([_0-9a-z]+)\/([_0-9a-z]+)\?(.+)$/ ) {
print "index.php?id=abc&a=$1&b=$2.xml&$3";
}
输出是:
index.php?id=abc&a=xyz&b=myfile.xml&s=t
为什么 .htaccess 文件不起作用?
编辑:似乎结果 URL 中的最后一个参数 (s=t) 被忽略了。
【问题讨论】:
标签: apache perl .htaccess mod-rewrite