我有以下2个链接,我用.htaccess规则还不是很好。
Old URL: http://www.mywebsite.org.uk/donate/donate.php?charity_id=885&project_id=18111 New URL: http://new.mywebsite.org.uk/donation/to/885/18111
我想要从旧url到新url的所有stream量(包括参数charity_id & project_id )。
我试图学习.htaccess的规则,但在网上find的教程有点模糊。
我真的很喜欢.htaccess规则的一个简单的解释。
(给一个人一条鱼,喂他一天, 教一个人钓鱼,养活他一辈子 )。
正确的答案将是一个简单而有用的解释(如果可能的话还有规则!)。
为了学习设置.htaccess规则,你至less需要一些正则expression式技巧,并且有信心使用mod_rewrite Apache模块,因为它灵活地构build了重写规则。
如果是这样,你的代码可以像
RewriteEngine On RewriteCond %{QUERY_STRING} ^charity_id=([0-9]+)&project_id=([0-9]+)$ RewriteRule donate/donate.php http://new.mywebsite.org.uk/donation/to/%1/%2? [L,R=301]
在http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html (对于2.4 Apache版本,如果适用的话,select一个不同的版本)是一个有用的参考,所以你必须从它开始,即使为了更好了解上面的代码。
你可以把RewriteRule看作是重写的砖块,所以每个规则至less会使用一次。 当您需要检查环境variables或引用查询string值时,您将在RewriteCond之前添加,就像在我们的代码段中一样。
要把一个反向引用放到前一个RewriteCondreplacestring中,你将使用从%1到%9值; 如果你需要从RewriteRule本身的第一部分反向引用,你将使用$1到$9 。
注意replaceurl结尾处的问号标记,因为这是跳过查询string的方式; 如果缺less,您将在新url的末尾添加?charity_id=885&project_id=18111 。
在另一篇文章中,sysadmin1138写了一个很好的介绍到mod重写。
你可以在这里find这个post。
/编辑:例如:
old: http://example.com/path?var=val new: http://example.com/path/var/val
的.htaccess
RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$ RewriteRule ^/path /path/%1/%2?