htaccess - 用于静态文件的RewriteRule

时间:2010-12-20 19:41:37

标签: .htaccess

如何将图像和其他静态文件的URL重写到特定文件夹,即到目前为止我正在使用它:

RewriteRule \.(woff|ttf|svg|js|ico|gif|jpg|png|css|htc|xml|txt)$ /MyFolder/$1

但它不起作用,

请帮忙。

------------------- update ---------------------

好的,现在我有:

RewriteCond %{HTTP_HOST} ^(www.)?exmpale.com$
RewriteCond %{REQUEST_URI} !^/exmpale.com/
RewriteRule ^(.*\.(woff|ttf|svg|js|ico|gif|jpg|png|css|htc|xml|txt))$ /exmpale.com/$1

RewriteCond %{HTTP_HOST} ^(www.)?exmpale.com$
RewriteRule !\.(woff|ttf|svg|js|ico|gif|jpg|png|css|htc|xml|txt)$ /exmpale.com/index.php

所以图像重定向到exmpale文件夹工作但现在我想重写其他所有的index.php,上面的解决方案到目前为止还没有工作。

欢呼声, /马尔钦

2 个答案:

答案 0 :(得分:4)

也许这就是你想要的:

RewriteRule ^(.*\.(woff|ttf|svg|js|ico|gif|jpg|png|css|htc|xml|txt))$ /MyFolder/$1

或者也许这样:

RewriteRule ([^/]*\.(woff|ttf|svg|js|ico|gif|jpg|png|css|htc|xml|txt))$ /MyFolder/$1

如果这些都不是你想要的,请添加一些你想要的输入/输出的例子。

对于您的更新,您可能希望在此规则匹配时使用L标志来停止规则处理。例如:

RewriteCond %{HTTP_HOST} ^(www.)?exmpale.com$
RewriteCond %{REQUEST_URI} !^/exmpale.com/

# The next line is long. Scroll to the end!
RewriteRule ^(.*\.(woff|ttf|svg|js|ico|gif|jpg|png|css|htc|xml|txt))$ /exmpale.com/$1 [L]

RewriteCond %{HTTP_HOST} ^(www.)?exmpale.com$
RewriteRule .* /exmpale.com/index.php

答案 1 :(得分:0)

您没有捕获初始请求。请尝试以下方法:

RewriteRule (.*)\.(woff|ttf|svg|js|ico|gif|jpg|png|css|htc|xml|txt)$ /MyFolder/$1.$2

这将获得以指定的扩展名结尾的所有内容,并在/MyFolder/下重定向。例如:/something/image.jpg现在将转到/MyFolder/something/image.jpg

注意:通过添加检查文件类型的条件,可能有更好的方法。