我最近为我的域开发了一个新网站,今天我想推动它#34; live"通过将其提供给访问我的域example.com
的根目录的任何人。
但是,我不想在目录之间来回移动文件,以便存档"旧网站并提供新网站。
相反,我在.htaccess
中添加了以下RewriteRule:
RewriteRule ^((?!(newsite)|(oldsite)).+)$ /newsite/$1 [NC,L]
我的旧网站位于根目录中,而新网站位于/newsite
下。
现在,当我访问我的网站example.com
时,它会正确显示目录/newsite
下的网站内容,但不会在网址中显示该内容。到目前为止一切都很好。
然而,现在我想要一个特殊的"假的"目录在URL中提供。所以我希望example.com/oldsite
从根目录加载内容。
这是我的文件夹树的插图,以及我想要的内容:
root <--- accessible from 'example.com/oldsite'
├──index.php
├──css <--- accessible from 'example.com/oldsite/css'
├──js
└──newsite <--- accessible from 'example.com'
├──index.php
├──css <--- accessible from 'example.com/css'
└──js
我尝试将.htaccess
更改为:
RewriteRule ^((?=oldsite).+)$ $1 [NC,L]
RewriteRule ^((?!(newsite)|(oldsite)).+)$ /newsite/$1 [NC,L]
但这不起作用。我试过的其他东西在重定向循环中渲染了网站。有没有办法实现这个目标?
答案 0 :(得分:1)
您可以在站点根目录中使用这两个重写规则.htaccess:
RewriteEngine On
# load newsite if not newsite and not oldsite
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^((?!(?:newsite|oldsite)).*)$ newsite/$1 [NC,L]
# load root if request is newsite
RewriteRule ^oldsite(/.*)?$ /$1 [L,NC]