【问题标题】:Redirect entire directory as my home directory with mod_rewrite使用 mod_rewrite 将整个目录重定向为我的主目录
【发布时间】:2011-06-12 04:50:43
【问题描述】:

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

我已经准备好了一个网站。本网站的全部内容都在网站的主“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 的解决方案。谢谢。

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    您只需要指定您的 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]
    

    【讨论】:

    • 对不起,我应该更清楚 - 我在共享服务器上,所以我无法访问任何 conf 文件,因此我需要一个涉及 mod_rewrite 的解决方案。我将附加我的帖子以包含此信息。
    • 我的朋友,非常感谢。这很好用,非常感谢,让我又省了一个星期的头疼。
    猜你喜欢
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2014-08-20
    相关资源
    最近更新 更多