apache config 中的 rewriterule 或别名,用于将文件夹更改为根目录
Posted
技术标签:
【中文标题】apache config 中的 rewriterule 或别名,用于将文件夹更改为根目录【英文标题】:rewriterule or alias in apache config for folder to root change 【发布时间】:2018-06-05 08:52:18 【问题描述】:我正在将我的 Drupal 站点从 www.example.com/demo 更改为 www.example.com。 js、css 等资源仍然存在于“demo”文件夹下。实现此更改所需的 Rewriterule 或 Alias 应该是什么?
我目前在我的 .htaccess 文件中有这个设置
选项 +FollowSymlinks 重写引擎开启 RewriteCond %DOCUMENT_ROOT%REQUEST_URI -f [OR] RewriteCond %DOCUMENT_ROOT%REQUEST_URI -d 重写规则 ^ - [L] 重写规则 ^ /
【问题讨论】:
为什么不将资源复制到演示文件夹之外? 外部还有其他文件夹,为了更好地组织演示文件夹中的大量文件,我想将其保留在文件夹中。 【参考方案1】:你应该有这些规则来测试文件是否存在于demo文件夹中,如果存在则重写URL。
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %DOCUMENT_ROOT/demo%REQUEST_URI -f
RewriteCond %REQUEST_URI (\.js|\.css)$
RewriteRule ^(.*) /demo/$1 [QSA,L]
第 1 行:测试根文件夹中是否不存在请求文件
第 2 行:测试请求文件是否存在于 demo 文件夹中
第 3 行:测试请求文件是否以 js / css 扩展名结尾(根据您的情况进行更改)
第 4 行:重写 URL 以请求演示文件夹中的文件
【讨论】:
看起来不错,需要澄清的一点是,这些条件是否会查找“demo”文件夹的父文件夹中存在的 index.html 文件并查找 js、css、字体等在演示文件夹中,同时从网址中删除“演示”? 另外,如果有人使用网址 www.example.com/demo,他应该被自动定向到 www.example.com 你应该修改规则以适应你的情况,上面的规则只查找以 js / css 结尾的文件的扩展名以上是关于apache config 中的 rewriterule 或别名,用于将文件夹更改为根目录的主要内容,如果未能解决你的问题,请参考以下文章