2012-07-11 106 views
0

我运行一个MMO游戏粉丝网站http://www.ddmsrealm.com。在这个网站上,我已经运行了一个有任务和物品信息的数据库多年。它最初是使用MSSQL/ASP构建的,最近我将它转换为MYSQL/PHP。在这个转换中,我优化了数据库。在这样做的时候,我改变了一些结构和变量。现在,新的页面已经启动并正在运行,但我正在尝试在我的htaccess文件中编写规则,以容纳数百个任务和数千个项目,并使用新的数据库变量重新路由到新的数据库页面。任何和所有的帮助将不胜感激,因为我很难学习apache/htaccess。复杂的htaccess URL和变量重写

我有两个“细节”页面需要重新路由,同时改变变量名称。实际的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项目数据库/逼债geons-and-dragon-online-quest-info?ddoQuestID = 210 & ddoSeriesID = 30

如果我可以得到公式和步骤,我相信我可以将它应用到其他页面。作为htaccess重写的新手,我很难理解究竟需要什么发生以及按什么顺序发生。正如你可以想象的,这已经抬高了我的搜索引擎优化的不良现象,现在有大约5000多个网页转到了404网站。另外还有数百个网站链接了这个旧网址,现在这些链接被破坏,直到我可以解决这个问题。

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

+0

你需要有单独的改写条件和规则一起。所以,而不是追加现有的一个我应该做另一个另一个URL? – user1518699 2012-07-11 20:35:45

回答

1

的URI改写本身是非常简单的使用RewriteRule但改变的查询字符串,你需要使用对%{QUERY_STRING}变量RewriteCond和匹配,并使用符号反向引用匹配。查看文档的更多信息: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] 
+0

好的,谢谢!我想我明白你在做什么。所以第一步就是抓住变量。然后与那些你只是把他们放入重写规则。那么我可以通过添加&RareItemID =([0-9] +)来获取其他变量吗?这将是%3我可以插入到刚刚在第一个下面的新的重写规则?从一个“编程之家”到另一个正在融化我的大脑。谢谢! – user1518699 2012-07-11 20:02:43

+0

@ user1518699 *“那么我可以通过添加&RareItemID =([0-9] +)来获取其他变量吗?这就是%3,我可以插入到刚刚在第一个下面的新的Rewrite规则中?”*是的,只要是在另一个2之后,你可以使用**%3 **。 – 2012-07-11 20:21:31