【问题标题】:Htaccess rewrite url to lookup files in subfolderHtaccess 重写 url 以在子文件夹中查找文件
【发布时间】:2017-10-27 08:03:02
【问题描述】:

我有一个这样的网络结构:

root/
|-> lib/
|-> web/
   |-> css/
   |-> index.html
|-> .htaccess

我希望,当用户请求文件时,apache 实际上会在 web 子文件夹中查找但没有重定向。

示例:http://www.website.com/root/index.html 请求的文件是 root/web/index.html 但 url 保持不变

有没有办法通过 mod-rewrite(或其他任何东西)和根目录下的 .htaccess 来实现这一点,但不指示根(或域),这样任何“根”都可以在不修改 .htaccess 的情况下工作(对于例如,如果我将 root 重命名为“mynewroot”)?

谢谢。

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    您可以在root/.htaccess中使用此规则:

    RewriteEngine On
    
    RewriteRule ^(?!web/).*$ web/$0 [L,NC]
    

    (?!web/) 如果请求已经以/web/ 开头,则为停止重写的负预读

    【讨论】:

      【解决方案2】:

      是的,这是可能的。将您的 .htaccess 移动到“根”文件夹所在的父文件夹并使用通配符重写规则。

      在你的情况下:

      RewriteRule ^(.*)/$ /$1/web/ [L]
      

      【讨论】:

      • 不幸的是,我无权访问根目录的父文件夹;它必须是这个 .htaccess (root/.htaccess)
      • 阅读您的问题,我认为文件夹“root”实际上不是您的根文件夹,因为您将其指向 website.com/root/index.html ,如果是这种情况并且您只能访问文件夹根目录在这个域上,那么你重写的所有 URL 必须以 /root/ 开头
      • root 实际上可以是任何东西,我正在寻找一个脚本,它将所有请求重定向到当前请求的给定子文件夹,无论它是什么根。
      猜你喜欢
      • 2015-04-22
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 2016-11-28
      • 2015-09-27
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      相关资源
      最近更新 更多