使用mod_rewrite将整个目录重定向为我的主目录

时间:2011-06-12 04:50:44

标签: apache .htaccess mod-rewrite

我一直在寻找这个问题的答案,我自己尝试了许多技巧,但无济于事,所以我把问题带给所有聪明人。

我有一个网站都准备好了。本网站的全部内容位于网站的主“www”目录中。所以现在当我访问www.mywebsite.com/main时,它会转到www / main.php文件。但是,我想将我的网站的全部内容移动到www目录中的新文件夹中,我称之为“ts”。所以现在,我的main.php文件将在www / ts / main.php

但是,我遇到的问题是我希望所有URI保持不变,所以我想告诉服务器www.mywebsite.com/main现在位于www / ts / main.php而不是它的位置之前(www /),所有后续内容现在也在www / ts而不是www /.

中找到

我想我在www /目录中需要一个.htaccess文件,它告诉服务器www.mywebsite.com的绝对路径是在www / ts /找到的,但我不知道该怎么做。我的新www / ts /目录中也有一个.htaccess文件已经重定向了许多URI,但我想我需要告诉服务器目录中的所有文件都需要忽略/ ts / URI,我是不知道怎么做。

如果有人能指出我正确的方向,我会非常感激。感谢。

编辑:我在共享服务器上,因此我无法访问任何conf文件,因此我需要一个涉及mod_rewrite的解决方案。感谢。

1 个答案:

答案 0 :(得分:0)

您只需指定VirtualHost的DocumentRoot的位置即可。 检查Virtualhost的Apache配置(它可能是默认配置,但您可以为您的命名站点创建一个)。并查看DocumentRoot代码。

如果是这样的话:

DocumentRoot /foo/bar/www

改为:

DocumentRoot /foo/bar/www/ts

就是这样。

修改

仅限访问 .htaccess ,如果我们假设您将仅为一个DNS名称限制此新文件夹重定向(就好像您创建了一个子目录,可能稍后会创建一些其他子目录这应该工作:

RewriteEngine On
# limit this rule on the www.mywebsite.com DNS name requested
RewriteCond %{SERVER_NAME} ^www\.mywebsite\.com$
# limit infinite recursion, when filename is ok...
# no, in fact not # RewriteCond %{REQUEST_FILENAME} !-f
# well this one is better, no loop for mod_rewrite, even on 404
# the rule is applied only once
RewriteCond %{ENV:REDIRECT_STATUS} ^$
# so here's the rule, map the requested file on the filesystem in ts subdir
RewriteRule ^(.*)$ /var/www/ts/$1 [L]