.htaccess重定向:从带有变量的旧站点到Drupal& url别名

时间:2013-02-02 04:29:54

标签: .htaccess drupal mod-rewrite redirect

请查看此帖子的编辑内容。我给出的最后一个代码示例是我想要完成的。我有147行代码,我正在使用。我想我实际上并没有试图制定一个规则,因为我试图找出那些变量的重定向。

好的,我已经研究了几个小时了,正则表达式apache重写规则变得非常具体,我很难过。客户已要求将旧网站的网址重新编写/重定向到新的drupal网站以及具有网址别名的相应网页。有147个变量(全1 - 216(不按顺序)) 例: 我需要

/hardware/bikes.php?recordID=1 to redirect to http://www.bikerus.com/?q=hardware/first-bike-that-really-flies

,然后

/hardware/bikes.php?recordID=2 to redirect to http://www.bikerus.com/?q=hardware/second-awesome-bike-that-really-flies

依此类推

这是我到目前为止所拥有的:

RewriteCond %{QUERY_STRING} ^recordID=([0-9]+)$

RewriteRule ^/hardware/bikes\.php?recordID=%1$ http://www.bikerus.com/?q=hardware/first-bike-that-really-flies

这显然不起作用,任何想法的女士们和破坏者?

理想情况下,如果我能找出Drupal的另一个问题,我还没有想到(多年来),那将是很棒的。 有一个像这样的重定向:

redirect 301 /hardware/1.html   http://www.bikerus.com/hardware/first-bike-that-really-flies

而不是:

redirect 301 /hardware/1.html   http://www.bikerus.com/?q=hardware/first-bike-that-really-flies

但我的第一个问题是现在的优先事项。 提前谢谢。

编辑: 我正在尝试重定向的文件不是静态的,它们是Drupal数据库生成的url别名。

最后,是的,我需要制作147个单独的记录(硬编码),我的问题是如何做到这一点:

redirect 301 /hardware/bikes.php?recordID=1   http://www.bikesrus.com/?q=hardware/random-bike-title-one
redirect 301 /hardware/bikes.php?recordID=2   http://www.bikesrus.com/?q=hardware/random-bike-title-two-ewhbcfn
redirect 301 /hardware/bikes.php?recordID=3   http://www.bikesrus.com/?q=hardware/random-bike-title-three-kxjhmuflr
redirect 301 /hardware/bikes.php?recordID=4   http://www.bikesrus.com/?q=hardware/random-bike-title-four-more-random-stuff

对于那些不知道的人,Drupal有一个干净的url重写规则,它附带我正在编辑的.htaccess文件:

RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

所以我也需要能够导航它。

2 个答案:

答案 0 :(得分:0)

第二个问题的问题是,redirect对于通过简单重定向的任何事情都很糟糕。您需要RewriteRule才能完成此操作:

redirect 301 /hardware/1.html   http://www.bikerus.com/?q=hardware/first-bike-that-really-flies

更像这样:

RewriteRule ^([a-zA-Z]+)/$ /?q=$1 [R=301,L]

或许这个:

RewriteRule ^([a-zA-Z]+)/(.*)$ /?q=$1/$2 [R=301,L]

但是在你的帖子中你不清楚你从哪里得到first-bike-that-really-flies的东西。所以不要清楚如何在Drupal中处理它。非常特定于您的设置。

实际上刚刚回答了类似于over heremod_rewrite问题。可能会给你更多的洞察力。

答案 1 :(得分:0)

刚想通了。

RewriteCond %{THE_REQUEST} recordID=1
RewriteRule . http://www.bikesrus.com/hardware/bike-that-really-flies? [R=301,L]

<强> BOTH !!靠我自己,多搜索一下。不同的是,这次我将“硬编码”这个词放入我的搜索关键词中。感谢所有评论过的人。