如何使用RewriteRule重定向?
来自:
www.example.com/ca/blog/something
致:
www.example.com/ca/test.php?url=something
当然“某事”可能会改变。网址的其他部分将始终相同。
最后,我想使用test.php
参数集:
$url = $_GET['url'];
echo $url;
我已删除.htaccess中的所有其他规则,以确保没有冲突。请解释一下解决方案。我是正则表达式的新手。
答案 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。