我的drupal网站url的重写规则不起作用

时间:2012-05-01 19:07:01

标签: .htaccess mod-rewrite redirect url-rewriting drupal-6

我正在尝试在其.htaccess文件中为我的drupal网站编写几个重写规则,它似乎根本不起作用。我在正则表达式和mod_rewrite中缺乏先验知识和经验似乎也没有帮助这个原因。

我正在尝试重写的网址如下

来源:

http://www.mydrupalsite.com/somealphanumericwithspecialchars/somealphanumericwithspecialchars/somealphanumericwithspecialchars/somealphanumericwithspecialchars/Keyword1/Keyword2/UNIQUEID?queryparam1=somenumber

目的地:

http://www.mydrupalsite.com/legacystuff/UNIQUEID

我的.htaccess mod_rewrite代码是

  RewriteEngine on
  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  #This is the only rule written by me others are drupals
  RewriteRule ^(.*)/(.*)/(.*)/(.*)/Keyword1/Keyword2/([0-9]*)?$ legacystuff/content/$5 [R=302]
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

我基于一些快速浏览教程的理解和实现是前四个(.*)将与URL中的四个字母数字特征字匹配,关键字1和关键字2将保持不变,因此我可以匹配它们,这是唯一的数字目标网址实际需要的ID(目的地中的参数$ 5)将由([0-9*])?捕获。我在我的本地环境的 httpd.conf 中使用以下vhost

<VirtualHost *:80>
DocumentRoot "C:/wamp/www/mydrupalsite"
ServerName mydrupalsite.com
</VirtualHost>

我的麻烦是重新启动本地服务器并清除缓存后,不会发生从源到目标URL的重定向。任何关于我出错的地方以及如何做到正确的帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

最后让它工作了,为我的虚拟主机设置添加了RewriteBase,并在其下面放置了我的RewriteRule尾随?在我的目的地忽略查询字符串和L标志。在我的httpd.conf中设置RewriteLog有助于从更好的角度理解事物。希望这可以帮助其他人在drupal中新增.htaccess。

RewriteBase /
RewriteRule ^(.*)/(.*)/(.*)/(.*)/Keyword1/Keyword2/([0-9]*)?$ legacystuff/content/$5? [R=301,L]