mod_rewrite使用.htaccess重写url

时间:2012-10-22 11:07:52

标签: .htaccess mod-rewrite rewrite rule

我在google上搜索过这里的教程,帮助我重写我的网址。 我希望有人解释我必须写的内容和原因。

我有这个网址:

http://iescup.eu/tournaments.php?tourney[id]=1
http://iescup.eu/tournaments.php?tourney[id]=2
http://iescup.eu/tournaments.php?tourney[id]=3

等等

我想要这个网址:

http://iescup.eu/#!/tourneys/1
http://iescup.eu/#!/tourneys/2
http://iescup.eu/#!/tourneys/3

等等

此致 Rune Naundrup Dahl

1 个答案:

答案 0 :(得分:0)

因此,您在浏览器的网址栏中输入http://iescup.eu/tournaments.php?tourney[id]=1。请求/tournaments.php?tourney[id]=1将被发送到服务器 iescup.eu 。在该服务器上,这些规则位于文档根目录中的htaccess文件中:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^tourney\[id\]=([0-9]+)$ [NC]
RewriteRule ^/?tournaments.php$ /#!/tourneys/%1? [L,R=301,NE]

匹配%{QUERY_STRING}变量,数字ID按%1 进行分组和反向引用。规则的目标末尾有一个?,用于删除查询字符串,并使用NE标记,因此#不会被编码。

规则将浏览器重定向到http://iescup.eu/#!/tourneys/1,从而更改了URL地址栏。浏览器然后向 iescup.eu /发送另一个请求。请注意,#!/tourneys/1片段永远不会发送到服务器。片段只是客户端,用于确定应如何处理内容(也由javascript使用)。