如何使用 htaccess 使子文件夹像文档根目录一样?

Posted

技术标签:

【中文标题】如何使用 htaccess 使子文件夹像文档根目录一样?【英文标题】:How do I make a subfolder act like a document root using htaccess? 【发布时间】:2016-06-17 08:39:31 【问题描述】:

站点位置:http://localhost/~username/website

该网站会加载大量带有绝对 URL 的图像,例如 /image/image.png。

我需要该请求才能转到: http://localhost/~username/website/image/image.png 代替 http://localhost/image/image.png.

我还需要它不影响任何其他文件夹或根文件夹。这样我也可以访问http://localhost/image/image.png。

有没有办法让它在被这个子文件夹请求重定向时?

我希望像 /css/something.css 和 /image/image.png 这样的绝对引用指向 /subdirectory/css/something.css 和 /subdirectory/image/image.png。这样我就不必重写所有的绝对引用。所以,我不想修改根目录。

我想知道是否设置了一个不允许子目录“网站”无法访问根目录的虚拟主机。我从不需要此文件夹的 root 访问权限。

【问题讨论】:

【参考方案1】:

您可以在 root .htaccess 或 Apache/vhost 配置中使用此规则:

RewriteEngine On

RewriteCond %REQUEST_URI !^/~
RewriteRule ^(.*)$ ~username/website/$1 [L]

【讨论】:

我希望它可以在此子文件夹中有绝对引用添加 /~username/subfolder 的任何时候工作。所以 /include/style.css 将指向 /~username/subfolder/include/style.css。但是,它不会影响根域,因此我也可以拥有 /include/style.css。 可以去掉文件类型依赖吗? 我不想在根目录中有这个,因为我想有几个“网站”,每个网站都独立运作。是否可以在子文件夹 htaccess 中写一些东西? 要使此规则生效,您必须将它放在 root .htaccess 或 Apache 配置中。否则你将不得不在images, css, is等目录中创建多个.htaccess 是否可以设置 VirtualHost 以便 /subdirectory 完全独立于根目录?这样 /image 会转到 /subdirectory/image 吗?【参考方案2】:

为什么需要使用/image/image.png?您为什么不只使用其中之一:

http://localhost/~username/website/image/image.png (absolute)
image/image.png (relative without preceding slash)

【讨论】:

该站点已经建成并且有很多这样的站点。我不想修改工作网站。这是一个本地主机克隆【参考方案3】:

确保您被允许在您的网络服务器中使用 .htaccess 文件。看看这个如何在 apache 中启用: https://www.digitalocean.com/community/tutorials/how-to-use-the-htaccess-file

在根目录或 ~username/website 目录中创建一个 .htaccess 文件然后将其写入您的 .htaccess 文件:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^~username/web/image/(.*) /image/$1

【讨论】:

我希望它适用于所有参考文献。我做 /image/image.png 和 /css/style.css 我不希望他们点击 / 但 /~username/project/ 代替。 然后像这样添加另一个规则:RewriteRule ^~username/web/css/(.*) /css/$1 这个会放在我的子目录还是根目录?

以上是关于如何使用 htaccess 使子文件夹像文档根目录一样?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 .htaccess 而不是 VHost 将文档根目录设置为子目录

如何仅使用 .htaccess 文件设置 ssl

htaccess 域重定向到新域

如何使子文档在猫鼬的特定日期过期?

.htaccess文件应该放在哪个文件夹下

如何使用 AutoLayout 使子视图确定父/兄弟视图大小?