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

Mod rewrite 如何创建一个不会修改url的空重写规则,mod-rewrite,Mod Rewrite,我的网站上有几个目录中的静态文件。 我试图创建一个规则,指示重写引擎忽略所有这些静态文件 大概是这样的: #RewriteCond %{REQUEST_URI} !\.*(jpg|css|js|gif|png|swf)$ [NC] 这似乎只适用于某些情况,但并非所有情况 作为一个解决方案,我决定将任何请求文件的整个请求URI与以下扩展名之一匹配,并为它们创建一个“空”重写规则,基本上将用户重定向到精确的请求URL 为了实现这一目标,我做了以下工作: RewriteCond $1 \*.(js|

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

大概是这样的:

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

您不必维护一长串文件扩展名以进行排除,只需使用:

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

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

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

RewriteCond $1 *\.(js|ico|gif|jpg|png|css|swf|mp3|wav|txt)$ [NC]
RewriteRule ^(.*) \$1  [R=301,L]

这很有道理,但会导致内部服务器错误(500),如果将第一个*替换为(.*)?(在重写第二行中)也不会给出所需的结果。感谢您的帮助:)这种方式Apache只提供部分文件,大部分是图像,这基本上是我的问题,实际上是另一种方式。这样Apache就不会重写静态文件的URL。注意
的用法-在“重写控制”中进行否定。