2016-06-10 16 views
0

最近,我们重组了我们的一个客户的大型网站。这导致该网站上的所有新闻都位于不同的地方。问题是,谷歌缓存仍然显示他们在旧的位置,导致很多404未找到(其约1400新闻条目)。使用RegEx重定向使用来自文件的数据

通常情况下,使用稍微简单的正则表达式的重定向会很好,但不仅是新闻的路径发生了变化,还有一些参数。例如:

旧的URL:

http://www.customers-url.com/old/path/to/the/news/details/?tx_ttnews%5Btt_news%5D=67&cHash=a782f3027c4d00face6df122a76c38ed 

如何在新的URL应该是这样的:

http://www.customers-url.com/new/path/to/news/?tx_news_pi1%5Bnews%5D=65 

正如你所看到的,参数D的确从67变到65的部分?之前的网址也发生了变化。另外,tx_ttnews已更改为tx_newstt_news更改为news&cHash部分确实完全消失。

我在下面的格式更改的IDS在CSV:

old_id, new_id 
1,2 
2,3 
...etc... 

同去的?前更改的URL的一部分。由于即时通讯不完全是使用正则表达式的专家我的问题是:

这可以在.htaccess使用正则表达式(不知道它是否甚至可以使用文件作为输入)吗?那有多复杂?那么这样一个正则表达式会是怎样的呢?

+2

你会*更好*制作一个页面,在URL'/ old/path/to/the news/details'上响应,这可以使用你的表来查找新的ID,在代码,然后以编程方式发布301。 –

+0

所以你有一个新的路径(一个常量值改变为另一个常量),并且你想调整查询字符串。我有一个预感,这可能对'htaccess'太多了 - 我会倾向于保持旧路径不动,并让该程序只需对query-string进行必要的调整,然后使用新查询发出重定向到新路径-串。 – MBaas

+0

感谢您的评论,我担心可能会在.htaccess中做很多事情。我可能会通过在可以粘贴到htaccess中的python脚本中制作重定向列表来完成此操作。我想你可以发表评论作为答案@ChrisLear。 – Stuffy

回答

0

与其尝试使用.htaccess,如果您只是创建一个响应旧网址的新页面(/old/path/to/the/news/details),然后使该网页生成新网址并返回301到具有该新网址的浏览器。