htaccess 按文件夹重定向和带有上限变体的扩展名

htaccess redirect by folder AND extension with cap variations

进行涉及旧 windows 站点到新 CMS 设置的转换 - 由于许多指向 pdfs/images 的入站链接,他们不想重新路由(出于他们自己的原因) , 有一些 folder/files 将从包含某些 pdfs/images.

的旧设置中保留下来

当然,大写不是 windows 的问题,而是 linux 的问题 - 而且,一些有问题的根文件夹与新目录中的根永久链接同名网站。

因此,这些重写需要专门针对某些 files/folders,但也要考虑到潜在的大写错误。

例如,有一个名为 Industries 的文件夹(大写 I),在新系统上,有一个永久链接 'industries'(小写 i)。

因此,只要提交准确的 url 就可以了 - site.com/industries(小 i)在 CMS 中拉出正确的页面,site.[=39= .pdf(大写 I)从 lefover Industries 文件夹中提取一个 pdf 文档。

问题是一些入站链接是:site.com/industries/whatever.pdf(无上限),甚至 site.com/INDUSTRIES/whatever.pdf(全部大写 - 是的,没错)

当然没有大写字母 I - 然后这些在 CMS 中作为 404 失败。

因此,我正在尝试创建一个仅针对文件类型的重写规则:pdf、jpg 和 png - 并且仅当通过某些特定文件夹访问时。此外,它至少需要考虑避免 404 的主要拼写变体 - 当然,如果没有匹配,它应该中止并继续进行,以便 cms 可以处理它。

我目前所在的位置,使用现有文件夹的示例:Industrial

  RewriteCond %{REQUEST_URI} ^(.*)industrial(.*(jpg|png|pdf))$ OR
  RewriteCond %{REQUEST_URI} ^(.*)INDUSTRIAL(.*(jpg|png|pdf))$
  RewriteRule ^(.*)$ /?%1Industrial%2 [L,R=301]

希望你能看到我正在尝试做的事情,但到目前为止还没有成功。

感谢您的任何建议

在 root .htaccess 中以这种方式设置规则:

RewriteCond %{REQUEST_URI} ^/industries/(.+?)\.(jpg|png|pdf)$ [NC]
RewriteRule !^Industries/ /Industries/%1.%2 [L,R=301,NE]

不必担心大小写。在任何情况下,您都需要使用 [NC] 标志。那么它是如何进来的并不重要。在下面的这个场景代码中。如果 URI 以

的形式出现

http://example.com/Industrial/someimage.jpg

那么它什么也不会做。 NC 标志仍然匹配它。不执行重写。

RewriteCond %{REQUEST_URI} ^/industrial/(.+)\.(jpe?g|png|pdf)$ [NC]
RewriteRule ^ - [L,NC]

http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_nc