复杂的htaccess URL和变量重写

时间:2012-07-11 18:53:19

标签: .htaccess url variables dynamic url-rewriting

我运行了一个mmo游戏粉丝网站http://www.ddmsrealm.com。在这个网站上,我运行了一个带有任务和项目信息的数据库多年。它最初是用MSSQL / ASP构建的,我最近将它转换为MYSQL / PHP。在此转换中,我优化了数据库。这样做我改变了一些结构和变量。现在,新页面已经启动并运行,但我正在尝试在我的htaccess文件中编写规则以便容纳数百个任务和数千个项目以使用新的数据库变量重新路由到新数据库页面。当我努力学习apache / htaccess时,任何和所有的帮助都会受到赞赏。

我有两个“详细信息”页面需要重新路由,同时更改变量名称。实际的ID仍然是相同的,所以它应该工作。

原始任务页面是一个asp页面:

〜HTTP://www.ddmsrealm.com/ddo/quests/QDetail.aspx

永久重新路由到新的Quest详细信息页面(WordPress模板页面):

〜HTTP://www.ddmsrealm.com/index.php/dungeons-and-dragons-quest-and-magic-item-database/dungeons-and-dragons-online-quest-info

现在需要像下面那样重写参数:

旧:QuestID为新:ddoQuestID

旧:SeriesID到新:ddoSeriesID

所以这个想法就是这个:

〜HTTP://www.ddmsrealm.com/ddo/quests/QDetail.aspx QuestID = 210安培; SeriesID = 30

永久重定向为:

〜HTTP://www.ddmsrealm.com/index.php/dungeons-and-dragons-quest-and-magic-item-database/dungeons-and-dragons-online-quest-info ddoQuestID = 210安培; ddoSeriesID = 30

如果我能得到这个公式和步骤,我相信我可以将它应用到其他页面。作为htaccess重写的新手,我正在努力了解究竟需要发生什么以及以什么顺序发生。正如你可以想象的那样,这已经让我的搜索引擎优化很糟糕,现在有大约5000多个页面进入404.再加上数百个网站链接了这个旧URL,现在这些链接被删除,直到我可以解决这个问题。

非常感谢您提前帮助解决这个问题!

1 个答案:

答案 0 :(得分:1)

使用RewriteRule进行URI重写本身非常简单,但更改查询字符串,您需要使用RewriteCond并匹配%{QUERY_STRING}变量并使用后向引用匹配符号。有关详细信息,请参阅文档:http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

尝试这样的事情:

RewriteEngine On

# Match the query string
RewriteCond %{QUERY_STRING} QuestID=([0-9]+)&SeriesID=([0-9]+)
# Rewrite the URI and append the new query string
RewriteRule ^ddo/quests/QDetail.aspx$ /index.php/dungeons-and-dragons-quest-and-magic-item-database/dungeons-and-dragons-online-quest-info?ddoQuestID=%1&ddoSeriesID=%2 [R=301,L]