首页 > 解决方案 > 具有特定前缀的 JS 文件的 RewriteRule 的 .htaccess 问题

问题描述

我试图通过剥离前缀来允许用户访问以 wp- 为前缀的 JS 文件。但是,它确实会影响目录中没有前缀的其他文件。我知道我在某处遗漏了一些东西,这是规则:

RewriteRule ^/?includes/js/(.*).js$ /wp-includes/js/wp-$1.js [QSA,L]

使用该规则,/wp-includes/js/wp-file.js可以访问类似的URL,includes/js/file.js但是,/wp-includes/js/no-prefix.js不能访问类似的文件includes/js/no-prefix.js

我知道这一定与我的重写规则格式有关。有人能帮助我吗?

标签: apache.htaccessmod-rewrite

解决方案


这是您需要添加到/.htaccess(根文件夹)的规则

RewriteCond %{DOCUMENT_ROOT}/wp-includes/js/wp-$1\.js -f [NC]
RewriteRule ^includes/js/([^/]+)\.js$ /wp-includes/js/wp-$1.js [L]

注意:把它放在WP的主要重写规则之前。

简短说明:如果 url 是/includes/js/xxx.js,它首先检查/wp-includes/js/wp-xxx.js物理存在。如果是这样,它会在内部重写。

警告mod_rewrite与 WP 一起使用可能会导致问题。在这种情况下不应该是一个问题,但由于 WP 的内置重写系统,有时这样做是一个更好的主意。


推荐阅读