.htaccess htaccessurl指纹

.htaccess htaccessurl指纹,.htaccess,mod-rewrite,caching,apache2.2,.htaccess,Mod Rewrite,Caching,Apache2.2,有没有一种方法可以使用mod_rewrite和htaccess实现URL指纹识别,而不必在每次更新时更改文件名 这是服务器上的文件结构(忽略无关文件): 我的页面位于应用程序文件夹中。目前,我的页面中的元素如下所示: 我希望实现这样的元素: 我可以在每次更改文件名时进行部署,但我想知道是否有更简单的方法 我在我的.htaccess应用程序中的文件中尝试了这个: <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^pub

有没有一种方法可以使用
mod_rewrite
和htaccess实现URL指纹识别,而不必在每次更新时更改文件名

这是服务器上的文件结构(忽略无关文件):

我的页面位于应用程序文件夹中。目前,我的页面中的
元素如下所示:


我希望实现这样的元素:


我可以在每次更改文件名时进行部署,但我想知道是否有更简单的方法

我在我的
.htaccess
应用程序中的
文件中尝试了这个:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^public/(css|js)/(.*)\.[0-9]+(\.css|\.js)$ /public/$1/$2.$3 [L, QSA]
</IfModule>

重新启动发动机
重写规则^public/(css|js)/(.*)\[0-9]+(\.css|\.js)$/public/$1/$2.$3[L,QSA]
这不起作用。我还尝试了它的各种变体,结果要么是HTTP 500(完全失败),要么是404(规则不起作用)


如果可能的话,我希望避免在每个应用程序的文件夹中重复.htaccess,并且我希望将该文件保存在源代码管理中(因此在
/apps
中)。

您试图通过只允许数字来捕获
faf315f3
,这就是问题所在。您还需要包括Alpha:

RewriteRule^public/(css | js)/([^.]+)[0-9a-z]+((?:.min)?(?:css | js))$/public/$1/$2$3[NC,QSA,L]
此外,我还对您的规则进行了一些增强:

  • 您不需要在规则中使用转义周期-这些仅在条件中需要
  • 对于第二个捕获组,使用
    [^.]+
    (非句点的任何内容)而不是
    *
    (任何内容,零长度及以上)
  • 将句点移到最后一个
    css | js
    捕获之外,因为捕获将在目标URI中复制它
  • 捕获文件扩展名的整个组,并将
    .min
    设置为可选。这还意味着删除目标URI中的句点,从而产生
    $1/$2$3

  • 谢谢我做了一些修改,允许散列是可选的,而且
    .min
    不应该是可选的。
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^public/(css|js)/(.*)\.[0-9]+(\.css|\.js)$ /public/$1/$2.$3 [L, QSA]
    </IfModule>