我正在尝试在其 .htaccess 文件中为我的 drupal 站点编写一些重写规则,但它似乎根本不起作用。我在正则表达式和 mod_rewrite 方面缺乏先验知识和经验似乎也无济于事。
我试图重写的 URL 如下
来源:
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 URL(目标中的参数 $5)将被([0-9*])?
. 我在本地环境的httpd.conf中使用以下虚拟主机
<VirtualHost *:80>
DocumentRoot "C:/wamp/www/mydrupalsite"
ServerName mydrupalsite.com
</VirtualHost>
我的问题是重新启动本地服务器并清除缓存后,不会发生从源 URL 到目标 URL 的重定向。任何关于我哪里出错以及如何改正的帮助都将不胜感激。