0

我正在使用以下内容传递服务器上潜在文件位置的详细信息,但第 3 行导致它失败。通过删除这一行,test.php 文件会看到由 %1/%2 建立的正确文件位置

RewriteCond %{HTTP_HOST} ^([a-z0-9\-\_]+)\.domain\.com?
RewriteCond %{THE_REQUEST} (images/.*)
RewriteCond %{HTTP_HOST}%1 ^([a-z0-9\-\_]+)\.domain\.com(images/.*)
RewriteCond %1/%2 -f
RewriteRule ^.* test.php?file=%1/%2 [L]

一旦它工作,我将提供文件,如果它从新位置存在,如果不存在,下一个重写函数将构建图像并将其放置在下一次的位置。

任何帮助表示赞赏。

4

2 回答 2

0

您的问题缺少一些必要的细节,但这里是对发生的事情的猜测。

如果请求是针对http://abc123.domain.com/whatever/images/somefile.jpg,那么:

RewriteCond 1 匹配 and %1= "abc123"。

RewriteCond 2 然后匹配 and %2= "images/somefile.jpg"。

RewriteCond 3 根本没有意义,因为您试图将“abc123.domain.comabc123”与“(something).domain.comimages/.*”匹配。

RewriteCond 4 尝试确保“abc123/images/somefile.jpg”作为真实文件存在。

所以,我猜你的目录结构是“/domainprefix/images”,所以使用上面的 URL,你试图确保图像存在于“/abc123/images/somefile.jpg”。如果是这种情况,那么 RewriteCond 3 和 4 应该修改为:

RewriteCond %{REQUEST_URI} /%1/%2
RewriteCond %{REQUEST_URI} -f

同样,我不得不猜测你的目标是什么,但这至少应该更接近你的需要。

于 2013-02-21T02:56:29.030 回答
0

好的,我已经解决了这个问题,并且为了避免人们头疼几天,这是解决方案。

RewriteCond %{HTTP_HOST}%{THE_REQUEST} ^([a-z0-9\-\_]+)\.domain\.com.*?(/images[^\s]+)
RewriteCond %{DOCUMENT_ROOT}/%1%2 -f
RewriteRule ^.* %1%2 [L]

文件检查需要文档根目录,我花了几天时间试图解决这个问题。最终结果是直接提供存在的文件,如果在上述操作之后它们没有再次重写,则可以获取请求并将文件放置在正确的位置。感谢您的帮助 David Ravetti,您现在可以希望了解我所追求的。

于 2013-02-22T20:26:16.083 回答