当目标是 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
。您的第一个(工作)示例不包括此内容。减少转义。这似乎没有必要,而且会使表达式更清晰易读。