htaccess通过文件夹AND扩展重定向,并带有cap变体


htaccess redirect by folder AND extension with cap variations

进行的转换涉及到一个旧的windows站点到一个新的CMS设置-由于许多到pdfs/images的入站链接他们不想重新路由(出于他们自己的原因),一些文件夹/文件将保留在旧设置中,其中包含某些pdfs/images。

当然,caps不是windows的问题,而是linux的问题——而且,有几个有问题的根文件夹与新站点中的根永久链接同名。

因此,这些重写需要专门针对某些文件/文件夹,但也要考虑到可能遗漏的大写字母。

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

因此,只要提交了确切的url,就可以了——site.com/industries(small i)在CMS中调出正确的页面,site.com/industries/whatever.pdf(大写i)从lefover industries文件夹中调出pdf文档。

问题是,一些入站链接是:site.com/industries/whatever.pdf(无上限),甚至site.com/industries/whateverpdf(所有上限-是的)

当然,如果没有资本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 ^(.*)$ /$1?%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