0

我经营一个 mmo 游戏迷网站http://www.ddmsrealm.com。在这个网站上,我多年来一直在运行一个包含任务和项目信息的数据库。它最初是用 MSSQL/ASP 构建的,我最近将它转换为 MYSQL/PHP。在此转换中,我优化了数据库。在这样做的过程中,我改变了一些结构和变量。现在,新页面已启动并正在运行,但我很难在我的 htaccess 文件中编写规则以适应数百个任务和数千个项目,以使用新的数据库变量重新路由到新的数据库页面。当我努力学习 apache/htaccess 时,任何和所有的帮助都将不胜感激。

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

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

~http://www.ddmsrealm.com/ddo/quests/QDetail.aspx

永久重新路由到新的任务详细信息页面(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 重写的新手,我很难理解究竟需要发生什么以及以什么顺序发生。正如您可以想象的那样,这让我的 SEO 变得糟糕,现在大约 5000 多个页面变成了 404。再加上数百个网站已经链接了那个旧 URL,现在这些链接被丢弃了,直到我能解决这个问题。

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

4

1 回答 1

1

URI 重写本身使用 a 非常简单,RewriteRule但更改查询字符串您需要使用 aRewriteCond并匹配%{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]
于 2012-07-11T19:06:06.000 回答