带有特定前缀的JS文件的RewriteRule出现.htaccess问题

时间:2018-07-16 23:27:23

标签: apache .htaccess mod-rewrite

我正在尝试通过删除前缀来允许用户访问以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上访问。

我知道它必须与我的重写规则格式有关。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

这是您需要添加到/.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内置的重写系统,有时候这样做是一个更好的主意。