【问题标题】:rewriterule or alias in apache config for folder to root changeapache config 中的 rewriterule 或别名,用于将文件夹更改为根目录
【发布时间】: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]
重写规则 ^ /

【问题讨论】:

  • 为什么不将资源复制到演示文件夹之外?
  • 外部还有其他文件夹,为了更好地组织演示文件夹中的大量文件,我想将其保留在文件夹中。

标签: apache .htaccess


【解决方案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 结尾的文件的扩展名
猜你喜欢
  • 2017-05-24
  • 1970-01-01
  • 2019-08-29
  • 2021-05-29
  • 1970-01-01
  • 2014-08-11
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多