如何使用 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 使子文件夹像文档根目录一样?的主要内容,如果未能解决你的问题,请参考以下文章