使用.htaccess文件重新定位DocumentRoot

时间:2014-12-18 18:01:02

标签: .htaccess mod-rewrite

我正在尝试将所有http请求转到与DocumentRoot指向的位置不同的本地目录:

网络服务器配置:

<VirtualHost 1.2.3.4:80>
DocumentRoot /local/home/me/example.com
ServerName   example.com

但是,此站点的整个(PHP)代码不在DocumentRoot中,而是在子目录中:

/local/home/me/example.com/code/

目前,要访问该网站,我必须使用包含/code/子网址的网址。我想摆脱它,以便http://example.com/访问/local/home/me/example.com/code/

我知道正确的方法是让DocumentRoot指向subdir。我的网站托管服务商不会让我更改此设置(事实上,这就是我以前的方式,当我在我的私人网络服务器上托管这个网站时,我可以像这样设置DocumentRoot。)

我现在希望我可以通过重写.htaccess文件完成此操作。我只是不明白如何。

我的问题,特别是:

  • 对此有哪些重写规则?
  • 我可以为所有路径创建一个.htaccess文件,还是每个子网都有一个(例如,/code/内有子目录 - 他们每个都需要一个.htaccess文件吗?

1 个答案:

答案 0 :(得分:1)

您可以在/local/home/me/example.com/.htaccess文件中使用此代码:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^((?!code/).*)$ code/$1 [L,NC]

(?!code/)是否定前瞻,会检查请求是否已经不以/code/开头,如果条件为真,则会添加此内容。