0

我的网络根目录是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.mehttp://example.com/sub2/foo.html,这不是通缉)。

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

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

4

1 回答 1

1

我已经解决了。

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

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

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

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

但是,以下内容会:

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

很抱歉没有将所有与破解它相关的内容都放在问题中。
我希望这个答案可以帮助那些在同一件事上挣扎的人。

于 2012-12-07T05:53:56.977 回答