使用RewriteRule重定向

时间:2015-11-20 14:58:30

标签: regex mod-rewrite

如何使用RewriteRule重定向?
来自:

www.example.com/ca/blog/something  

致:

www.example.com/ca/test.php?url=something

当然“某事”可能会改变。网址的其他部分将始终相同。
最后,我想使用test.php参数集:

$url = $_GET['url'];
echo $url;

我已删除.htaccess中的所有其他规则,以确保没有冲突。请解释一下解决方案。我是正则表达式的新手。

2 个答案:

答案 0 :(得分:0)

尝试:

RewriteEngine On

RewriteBase /
# at the entrance of RewriteRule: ca/blog/something
RewriteRule ^ca/blog/(.*)$ ca/test.php?url=$1 [QSA]
# after transformation: "ca/blog/something" -> "ca/test.php?url=something"

答案 1 :(得分:0)

RewriteEngine On
RewriteRule ca/blog/(.*)$ /ca/test.php?url=$1 [L,R=301]

它捕获/blog/之后的所有内容,并将其作为test.php的参数提供。句点(。)表示“每个字符”,星号(*)表示“尽可能多找到(或者没有)”,括号将捕获结果。如果您想确保test.php中的url参数不为空,您可能需要使用加号(+),如下所示:

RewriteRule ca/blog/(.+)$ /ca/test.php?url=$1 [L,R=301]

这意味着“尽可能多的角色,但必须至少有一个”。此外,还有is a nice online tester