【问题标题】:HTACCESS: Change domain root to sub-directoryHTACCESS:将域根目录更改为子目录
【发布时间】:2011-08-24 14:17:00
【问题描述】:

我正在尝试将子目录用作我的一个域的根文件夹。使用 .htaccess,我使用 mod_rewrite 来完成工作。这是我已经拥有的代码:

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain/$1

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ /domain/index.php [L]

这可以完成工作,但还不能完全完成。例如:

如果我转到http://domain.com/,它会从domain 文件夹中显示index.php。如果我转到http://domain.com/test/,它将显示test 文件夹的内容(或403)。 但是如果我转到http://domain.com/test(用于使用快捷方式,甚至显示文件夹),我会被重定向到http://domain.com/domain/test/

这不应该发生。如果有的话,它要么从 .htaccess 中屏蔽(如果正在使用测试),要么直接转到 http://domain.com/test/。我试图想办法解决这个问题,但我做不到。所以我正在寻求你的帮助! :)

非常感谢任何和所有帮助。

【问题讨论】:

  • 这是 vhosts 的工作,而不是 .htaccess
  • 我正在使用 .htaccess。所以请提供支持,而不是让我学习其他东西。
  • 你不需要学习任何东西,你只需要在你的vhosts.conf中更改一个路径并重新启动服务器。
  • “所以请提供支持,而不是让我学习其他东西。” --- SO 不是一个您可以指定回答者回答什么以及如何回答的地方。无论您是否接受答案 - 不要忘记这是一个专业人士帮助专业人士的网站,而不是您个人的免费支持。
  • 伙计们,据我了解,他只是无法访问服务器,但拥有 .htaccess。

标签: php .htaccess directory root


【解决方案1】:

帮助我的是主机上的 auto.htaccess 生成器!!!

DirectoryIndex index.php
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://(www\.)?domain.com/TEST//.*$ [NC]
RewriteRule \.(js|css|jpg|gif|png|bmp|mp4|3gp|m4a|m4r|aac|mp3|ogg|wave)$ - [F]

【讨论】:

    【解决方案2】:
    RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
    RewriteRule ^(.*)$ /domain/$1/ [L]
    

    上面的代码成功地完成了我想做的所有事情。

    【讨论】:

      【解决方案3】:

      像这样使用 RewriteBase:

      重写基础 /f2f/f2fweb

      【讨论】:

        【解决方案4】:

        试试这个:它有点粗糙,但应该做你想做的。有一点困惑:我尝试做的一些事情将取决于您的 RewriteBase (您可能需要删除一个或多个 / 字符)。

        我基本上添加了一个初始块,专门在您的 /domain/ 文件夹中查找不以斜杠结尾的目录并添加了一个。让我知道它是否有效。

        RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
        RewriteCond %{REQUEST_URI} !^/domain/
        RewriteCond /domain/%{REQUEST_URI} -d
        RewriteCond %{REQUEST_URI} !(.*)/$
        RewriteRule ^(.*)$ /domain/$1/
        
        RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
        RewriteCond %{REQUEST_URI} !^/domain/
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ /domain/$1
        
        RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
        RewriteRule ^(/)?$ /domain/index.php [L]
        

        【讨论】:

        • 这对我不起作用。我仍然得到与原始编码相同的效果。
        【解决方案5】:

        评论者说得对,如果你想use a sub-directory as the root folder for one of my domains,只需在你的apache虚拟主机配置中配置它(DocumentRoot)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-10-02
          • 2015-03-09
          • 2014-10-24
          • 1970-01-01
          • 2017-05-13
          • 1970-01-01
          • 2017-06-26
          相关资源
          最近更新 更多