【问题标题】:Redirect all subfolders but keep files accessible?重定向所有子文件夹但保持文件可访问?
【发布时间】:2014-10-15 11:39:37
【问题描述】:

我有一个网站,其中包含一些图片。

假设根文件夹是“公共的”。 在这个文件夹中,我有另一个名为“images”的文件夹。 在名为“images”的文件夹中,我有很多名为“1”...“92345678”的文件夹。

我想创建一个 htaccess 规则,将用户从文件夹重定向:

www.website.com/public/images/
www.website.com/public/images/1
www.website.com/public/images/2
...
www.website.com/public/images/10000001

www.website.com/public/

请给我一个适用于所有子文件夹的选项。 (递归)

我也想只重定向文件夹,图片网址应该可以!

【问题讨论】:

  • 如果请求在浏览器中路由到www.website.com/public/,您的图像将如何加载?
  • 所以...您想重定向文件夹请求,但保留对图像的请求?
  • 是的,这就是我想做的。我找到了一个可能的解决方案: RewriteRule ^[SUBDIRECTORY]/(.*)$ /$1 [R=301,NC,L]
  • 我试过这个:RewriteRule ^([^/]+)\/(.*)$ $2 [L] ,但它不起作用。

标签: regex apache .htaccess preg-match


【解决方案1】:

您可以在 /public/images/.htaccess 文件中使用此规则:

RewriteEngine On
RewriteBase /public/images/

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . /public/ [L,R=302]

【讨论】:

  • @anubhava 根据他的问题和 cmets,您必须包括文件夹检查条件,因为他只希望重定向文件夹而不是其文件内容。
  • 我应该如何添加条件以仅重定向文件夹并排除图像?
  • @Pascut 在RewriteRule 之前和RewriteBase 之后添加此RewriteCond %{REQUEST_FILENAME} -d
【解决方案2】:

您必须启用重写引擎,然后使用规则从以/public/image 开头的URI 重定向到/public

RewriteEngine on
RewriteRule ^/public/images.* /public

【讨论】:

    【解决方案3】:

    我找到了答案:

    #redirect all subfolders to root and exclude images
    RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png)$ [NC]
    RewriteRule ^images/(.*)$ / [R=301,NC,L]
    

    感谢 Mark Shevchenkoanubhava 的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      相关资源
      最近更新 更多