2011-06-12 42 views
0

我一直在寻找一个答案这一段时间,我已经尝试了很多技巧我自己,但无济于事,所以我把我的问题给所有你聪明的人。重定向整个目录作为我的主目录与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/ts中找到。

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

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

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

回答

0

您只需指定VirtualHost的DocumentRoot位置。 检查你的虚拟主机的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] 
+0

对不起,我应该更清楚 - 我是一个共享的服务器上,所以我不访问任何通过conf文件,所以我需要涉及的mod_rewrite替代的解决方案。我将追加我的帖子以包含此信息。 – Kevin 2011-06-12 19:45:50

+0

我的朋友,非常感谢。这工作很好,非常感谢,并挽救了我一周的头痛。 – Kevin 2011-06-13 06:25:12