Apache mod_rewrite - 为什么友好 URL 不适用于静态文件?

Apache mod_rewrite - 为什么友好 URL 不适用于静态文件?

当目标是 php 脚本时,使用友好 URL 的配置可以正常工作,如下所示:

RewriteRule ^products/([a-z0-9-]+)/([0-9]+)/?$ /prod.php?id=$2&name=$1 [NC]

但是,当我使用静态文件(如下所示)作为目标时,不起作用:

RewriteRule ^\/css\/\_version\_([1-9]+)\_([0-9])\/(.*)$ /stat/css/$3    [NC]

上述配置仅当我放置重定向标志时才有效,如下所示:

RewriteRule ^\/css\/\_version\_([1-9]+)\_([0-9])\/(.*)$ /stat/css/$3    [R]

目标“/stat/css/*.css”存在。当我使用“别名”配置时,它也能正常工作。但是,我必须使用 mod_rewrite 才能做到这一点。

没有收集到任何错误日志(调试模式)。访问日志中只有 404。

有人能帮助我吗?

答案1

你可以尝试一下(未经测试)

RewriteRule ^css/_version_([1-9]+)_([0-9]\/(.*)$ /stat/css/$3

与您的示例的区别:

  • 没有前导斜杠。这在 VHost 定义中是必需的,但不应包含在文件中.htaccess。您的第一个(工作)示例不包括此内容。

  • 减少转义。这似乎没有必要,而且会使表达式更清晰易读。

相关内容