我的webroot是example.com
。我在webroot下面有两个子目录,名为sub1
和sub2
。在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的路径不是。
如果有人能解释为什么我的方法不起作用,以及最佳实践"做这种重定向是 - 我将不胜感激。
答案 0 :(得分:1)
我已经解决了。
不幸的是,当我撰写问题时,我过度简化了设置。事实上,在“处女”环境中,原始.htaccess
的工作方式完全符合我的预期。
但是,我使用此.htaccess
的设置是使用Drupal 7,这有所不同,因为Drupal 7使用“干净的URL”。
我发现重写为“干净”的网址不起作用。因此,重定向到Drupal节点#1时,.htaccess
中的以下规则不起作用:
RewriteRule ^(.*)$ /sub2/node/1
但是,以下是:
RewriteRule ^(.*)$ /sub2/?q=node/1
道歉没有把所有与解决问题相关的内容放在一起 我希望这个答案可以帮助那些与同样事情斗争的人。