1

我网站上的几个目录中有静态文件。我试图创建一个规则来指示重写引擎忽略所有这些静态文件。

像这样的东西:

#RewriteCond %{REQUEST_URI} !\.*(jpg|css|js|gif|png|swf)$ [NC]

这似乎只在某些情况下有效,但并非全部。

作为一种解决方案,我决定将任何请求文件的整个请求 URI 与以下扩展名之一进行匹配,并为它们创建一个“空”重写规则,基本上将用户重定向到精确的请求 URL。

为了实现这一点,我做了以下事情:

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]
4

2 回答 2

1

而不是维护一长串要排除的文件扩展名,您可以简单地使用:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

这意味着如果请求不是针对真实文件或符号链接,则应用下一个 RewriteRule。

于 2013-07-09T08:28:16.047 回答
1

可能你的反斜杠应该在星号和点之间?

RewriteCond $1 *\.(js|ico|gif|jpg|png|css|swf|mp3|wav|txt)$ [NC]
RewriteRule ^(.*) \$1  [R=301,L]
于 2013-07-09T08:28:26.190 回答