将旧URL重写为新的,干净的URL

时间:2011-10-27 22:48:56

标签: apache .htaccess mod-rewrite

我让.htaccess文件愉快地将/conferences/details/21之类的内容重写为/index.php?pages=conferences&var1=details&var2=21

我让Piwik跟踪此网站,该网站显示了很多来自未更新其网址的网站(这是一个非常新的网站重新发布)的网址,例如

http://www.domain.com/index.cfm?page=conference&intConferenceID=81

http://www.domain.com/index.cfm?page=conference&intConferenceID=88&type=conference

我想将它们重写为/conferences/details/[numeric ID seen above]

我试过这个:

RewriteRule ^index.cfm?page=conference&intConferenceID=(\d+)/?$ /conferences/details/$1 [L,NC,QSA]

显然忽略了第二个例子。但是,它给了我一个404说index.cfm无法找到。

我需要写什么重写规则才能将上述格式化链接(ID更改)重写为/conferences/details/[ID]

1 个答案:

答案 0 :(得分:1)

您可以从RewriteCond中提取查询字符串:

RewriteCond %{REQUEST_URI} ^/index.cfm
RewriteCond %{QUERY_STRING} page=(.+)&intConferenceID=([^&]+)
RewriteRule . /%1/details/%2 [L]

根据/foo/bar/21 - >不确定“详细信息”的来源/index.php?f=foo&b=bar&arg=21改写。