apache - 如何使用apache mod_rewrite从请求的URL中的文件名中删除md5而不使用md5?
问题描述
例子:
这 => URL 请求 ./any_folder/main.d25a1b054a0b0fbeb3def5a0ff50d01e.min.js
为此 => URL 请求 ./any_folder/main.min.js
我的 htaccess:
RewriteEngine On
# Remove md5 from asset files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+).([a-fA-F0-9]{32}).(.+)?(js|css)$ $1.$3 [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
上面的配置不起作用。
解决方案
让您的 htaccess 规则文件遵循以下方式。请确保在测试您的 URL 之前清除您的浏览器缓存。
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Remove md5 from asset files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
##RewriteRule ^([^.]*)\.(?:[[:alnum:]]{32})\.([^.]*)\.(js|css)/?$ $1.$2.$3 [L]
##Since following has worked for OP, so adding it here, commenting above.
RewriteRule ^(.+).([a-fA-F0-9]{32}).(.+)?(js|css)$ $1.$4 [L]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
推荐阅读
- java - Java Swing JButton对齐 - BoxLayout
- python - 如何存储函数输出而不在 Spyder 中重新运行函数
- kivy - 不显示没有扩展名的 jpg 图像
- python - 猪拉丁编码
- linux - 如何在 docker 文件中包含 shell 脚本套件
- google-cloud-platform - 无法通过 SSH 连接到 GCP 实例
- nginx - 重定向http-to-https +反向代理时的Nginx“ERR_TOO_MANY_REDIRECTS”
- python-3.x - 在 Ubuntu 20 LTS 上使用 Python3 的 Aerospike Collectd 插件
- javascript - Fusker 链接解析;指定两个范围的值必须匹配的代码
- mysql - VB.Net 与 Mysql 连接尝试失败...”尝试从 Mysql 表中读取数据时出现错误。插入语句正在工作