我想在其网址中提供nomin
的任何文件的未公开版本。
例如,如果我要求:
http://localhost/foo/bar.min.js?nomin
我应该收到文件:
http://localhost/foo/bar.js
但是,我希望只有文件存在才会发生。
这就是我在.htaccess文件中的内容:
RewriteCond %{QUERY_STRING} nomin
RewriteCond %{REQUEST_URI} (.*)\.min(\..*)
RewriteCond %{DOCUMENT_ROOT}/$1$2 -f
RewriteRule (.*)\.min(\..*) $1$2 [L,QSA,NC]
然而,它不起作用。如果我删除我检查文件是否存在的行:
RewriteCond %{DOCUMENT_ROOT}/$1$2 -f
它开始工作,但可能指向不存在的文件。
我试过了:
RewriteCond %{DOCUMENT_ROOT}$1$2 -f
。REQUEST_URI
之类的RewriteCond %{REQUEST_URI}/$1$2 -f
(使用和不使用斜杠),即使它没有多大意义。匹配整个内容,只检查“.min”
以外的部分RewriteCond $0 (.*)\.min(\..*)
RewriteCond $1$2 -f
我做错了什么?
附带问题:有没有办法更改我的RewriteCond
和RewriteRule
,这样我就不必再写(.*)\.min(\..*)
两次了?
答案 0 :(得分:1)
这应该适合你:
RewriteCond %{QUERY_STRING} ^nomin$ [NC]
RewriteCond %{REQUEST_URI} ^(.+)\.min(\.[^.]+)$ [NC]
RewriteCond %{DOCUMENT_ROOT}/%1%2 -f
RewriteRule ^ %1%2 [L,NC]
使用%1
,%2
代替$1
,$2
,用于从RewriteCond