MOD_REWRITE不能创build正确的path

所以我试图在我的服务器上设置一个RewriteRule来caching静态对象。 该文件是在这个命名scheme/docroot/css/stylesheet.min.css中,我把它们打印在代码中,例如/docroot/css/stylesheet.min.123438348.css(数字是例子,它来自一个获得修改的函数)。 注意docroot是一个示例目录

我怎么能让服务器忽略数字,并redirect到stylesheet.min.css我需要为每个CSS和JS文件(/ JS和/ CSS),以及一个特定的精灵图像

我目前的尝试

  RewriteRule ^ /(docroot)/(js | css)/(。+)\。(min)\。(。+)\。(js | css)$ /$1/$2/$3.$4.$6
 RewriteRule ^(/ docroot / images / spritemap)\。([0-9] +)\。(png)$ $ 1. $ 3 

更新:现在我有这样的设置

<Location /> RewriteEngine on Options FollowSymLinks RewriteRule ^(.+)\.(min)\.([0-9]+)\.(js|css)$ $1.$2.$4 [L] </Location> 

这是将localhost / docroot / css / stylesheet.min.12343242.css改写为/var/www/html/docroot/trunk/docroot/css/stylesheet.min.css

所以它正在得到正确的文件,我怎么得到的Apache启动/ var / www / html / docroot / trunk /


 <Location /> RewriteEngine on RewriteBase / RewriteRule ^(.+)\.(min)\.([0-9]+)\.(js|css)$ $1.$2.$4 [PT] </Location> 

选项目录列表中的FollowSymLinks


好,而不是

 /var/www/html/docroot/trunk/docroot/css/stylesheet.min.css 

我得到一个像这样的url

 /docroot/trunk/docroot/css/stylesheet.min.css 

我删除了RewriteBase命令,所以我仍然需要删除开始/ docroot /树干

我build议尝试以下内容:

 RewriteRule ^/(.+min)\.([0-9]+)\.(js|css)$ /$1.$3 [PT] 

当没有设置标志时,Apache有时会有不可预知的行为。 我build议每次都明确地设置它。 此外,正则expression式中的句点字符必须被转义 – 否则它们会传递“任何字符”。

我也推荐阅读mod_rewrite上的官方Apache文档: http : //httpd.apache.org/docs/current/mod/mod_rewrite.html

不要在<Location>使用Rewrite指令 – 如果你不使用htaccess,只要在虚拟主机上下文中使用它们。 这大大简化了使用mod_rewrite的每一个方面,并且不需要剥离每个目录前缀,RewriteBase等等。