我的网站上的几个目录中都有静态文件。 我试图创建一个规则,指示重写引擎忽略所有这些静态文件。
类似的东西:
#RewriteCond %{REQUEST_URI} !\.*(jpg|css|js|gif|png|swf)$ [NC]
这似乎仅适用于某些情况,但不是全部情况。
作为一个解决方案,我决定将任何请求文件的整个请求URI与以下扩展之一进行匹配,并为它们创建一个“空”重写规则,基本上将用户重定向到精确的请求URL。 / p>
为此,我做了以下事情:
RewriteCond $1 \*.(js|ico|gif|jpg|png|css|swf|mp3|wav|txt)$ [NC]
RewriteRule ^(.*) \$1 [R=301,L]
由于某些原因这不起作用,在access.log和error.log中也没有有用的信息。 提前感谢您的任何帮助!
完整代码:
#Catch static content and don't modify it
RewriteCond $1 \*.(js|ico|gif|jpg|png|css|swf|mp3|wav|txt)$ [NC]
RewriteRule ^(.*) \$1 [R=301,L]
#prevent looping
RewriteCond %{QUERY_STRING} !clientId=
#redirect sub domain to the client page cutl.mysite.com = mysite.com/in/index/php?clientId=curl
RewriteRule ^(.*)$ /in/index.php?uclinetId=$1 [L]
答案 0 :(得分:1)
您可以简单地使用:
,而不是维护一长串文件扩展名以供排除RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
如果请求不是真实文件或符号链接,则表示应用下一个RewriteRule。
答案 1 :(得分:1)
你的反斜杠可能应该在星号和点之间吗?
RewriteCond $1 *\.(js|ico|gif|jpg|png|css|swf|mp3|wav|txt)$ [NC]
RewriteRule ^(.*) \$1 [R=301,L]