如何创建一个空的重写规则,不会修改url

时间:2013-07-09 08:25:16

标签: mod-rewrite

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

类似的东西:

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

2 个答案:

答案 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]