2012-12-06 37 views
0

我的webroot是example.com。我在webroot下有两个子目录,分别命名为sub1sub2。里面sub1我已经放在以下.htaccess由Apache RewriteEngine困惑

RewriteEngine On 
RewriteCond %{REQUEST_URI} test\.me$ [NC] 
#RewriteRule ^(.*)$ http://example.com/sub2/foo.html [L] 
RewriteRule ^(.*)$ /sub2/foo.html [L] 

当有人试图访问http://example.com/sub1/test.me,我希望他们能够送达http://example.com/sub2/foo.html

以上.htaccess不起作用。如果我使用完整路径取消注释RewriteRule,并使用相对于webroot的路径注释掉RewriteRule,则它几乎按预期工作(右侧显示,但显示的URL也从http://example.com/sub1/test.me更改为http://example.com/sub2/foo.html,其中不想要)。

我无法理解为什么完整路径几乎可以工作,而相对于siteroot的路径却没有。

如果有人可以解释为什么我的方法不起作用,以及做这种重定向的“最佳做法”是什么 - 我将不胜感激。

回答

1

我解决了它。

不幸的是,当我编写问题时,我简化了设置。事实上,在“处女”环境下,原来的.htaccess完全按照我预期的那样工作。

但是,我使用这个.htaccess的设置是在Drupal 7中,这是有所不同的,因为Drupal 7使用“干净的URL”。

我发现,重写为“干净”的网址不起作用。因此,在.htaccess以下规则不重定向到Drupal的节点#1时工作:

RewriteRule ^(.*)$ /sub2/node/1 

但是,下列情况:

RewriteRule ^(.*)$ /sub2/?q=node/1 

道歉不把所有的,有关在咔吧题。
我希望这个答案可以帮助那些与同一事物斗争的人。