Apache RewriteEngine困惑不解

时间:2012-12-06 18:58:11

标签: apache drupal drupal-7 rewrite

我的webroot是example.com。我在webroot下面有两个子目录,名为sub1sub2。在sub1内{我}已放置以下.htaccess

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 个答案:

答案 0 :(得分:1)

我已经解决了。

不幸的是,当我撰写问题时,我过度简化了设置。事实上,在“处女”环境中,原始.htaccess的工作方式完全符合我的预期。

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

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

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

但是,以下是:

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

道歉没有把所有与解决问题相关的内容放在一起 我希望这个答案可以帮助那些与同样事情斗争的人。