htaccess rewriterule,参数中包含多目录字符串

时间:2014-05-26 20:22:28

标签: .htaccess mod-rewrite

我已经谷歌搜索了一段时间,但似乎无法找到解决方案,所以我会直接针对我的问题量身定制一个问题。

我在足球/足球网站上工作,并参加了所有比赛。每个数据库行都有一个包含虚拟文件名的字段,如“2010-season / 26-may-2010 / hometeam-vs-awayteam.php”

我想要 - > /matches.php?url=2010-season/26-may-2010/hometeam-vs-awayteam.php
看起来像 - > /matches/2010-season/26-may-2010/hometeam-vs-awayteam.php

我的第一个猜测是重写符号看起来像这样:

RewriteRule ^/matches/(.*)$ /matches.php?url=$1 [L]

但这只会给我404错误。我尝试了不同的方法,但没有解决我的问题。 是将多个子文件夹传递到单个参数的问题吗?

1 个答案:

答案 0 :(得分:0)

这应该适合你:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /matches\.php\?url=(.*)\ HTTP
RewriteRule ^ /matches/%2? [R=301,L]

RewriteRule ^matches/(.*)$ /matches.php?url=$1 [L]

它会将/matches.php?url=2010-season/26-may-2010/hometeam-vs-awayteam.php重定向到/matches/2010-season/26-may-2010/hometeam-vs-awayteam.php,然后默默地将其重写为/matches.php?url=2010-season/26-may-2010/hometeam-vs-awayteam.php
matches.php文件中使用$_GET['url'];获取url参数。