【发布时间】:2013-02-02 04:29:54
【问题描述】:
请查看此帖子的编辑。我给出的最后一个代码示例是我想要完成的。我正在使用 147 行代码。我想我实际上并没有试图制定规则,而是试图找出带有这些变量的重定向。
好的,我已经研究了几个小时,正则表达式 apache 重写规则变得非常具体,我很难过。客户要求将旧站点 url 重写/重定向到新的 drupal 站点和具有 url 别名的相应页面。有 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]
所以我也需要能够导航。
【问题讨论】:
-
第一辆真正能飞的自行车是静态的吗?
-
This:
RewriteRule ^/hardware/bikes\.php?recordID=%1$永远不会匹配,因为您将查询包含在正则表达式中。 -
对,我知道。我正在修补它。我只是以此为起点。有什么建议吗?
-
如果传入的 URL 不包含要添加到替换 URL 中的查询(例如
random-bike-title-two-ewhbcfn),则不可能制定单一的通用规则。这些参数无法猜测,因此一种解决方案是硬编码 147 条规则,如您所说,或将所有似乎具有模式 (?) 的传入 URL 直接重定向到脚本。 -
是的!但这看起来像硬编码吗?
标签: .htaccess drupal mod-rewrite redirect