检查文件与mod_rewrite一起存在

时间:2012-10-01 04:48:34

标签: .htaccess mod-rewrite

我想检查是否存在带有“jpg”扩展名的文件,否则检查是否存在“gif”,否则加载默认图像。所有的mod_rewrite,我都提到了很多例子,但都是一样的。我想检查一个正则表达式网址。现在我的httacces是这个但没找到:

RewriteEngine On
#RewriteBase /

# Do not do anything for already existing files and folders
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ - [L]

# add .html file extension (if such file does exist)
# jpg
RewriteCond %{DOCUMENT_ROOT}/profileImgs/$1_50\.jpg$ -f
RewriteRule ^([0-9]+)/img/normal$ profileImgs/$1_50.jpg  [L]

# gif
RewriteCond %{DOCUMENT_ROOT}/profileImgs/$1_50\.gif$ -f
RewriteRule ^([0-9]+)/img/normal$ profileImgs/$1_50.gif  [L]

# default
RewriteRule ^([0-9]+)/img/normal$ profileImgs/noImg_50.gif  [L]

我如何解决这个问题?谢谢。

3 个答案:

答案 0 :(得分:2)

尝试:

# add .html file extension (if such file does exist)
# jpg
RewriteCond %{REQUEST_URI} ^/([0-9]+)/img/normal$
RewriteCond %{DOCUMENT_ROOT}/profileImgs/%1_50\.jpg$ -f
RewriteRule ^([0-9]+)/img/normal$ profileImgs/$1_50.jpg  [L]

# gif
RewriteCond %{REQUEST_URI} ^/([0-9]+)/img/normal$
RewriteCond %{DOCUMENT_ROOT}/profileImgs/%1_50\.gif$ -f
RewriteRule ^([0-9]+)/img/normal$ profileImgs/$1_50.gif  [L]

# default
RewriteRule ^([0-9]+)/img/normal$ profileImgs/noImg_50.gif  [L]

答案 1 :(得分:1)

我用我的朋友的解决方案解决了这个问题,有2个htaccess。 在主要的htacces我把:

RewriteRule ^([0-9]+)/normal profileImgs/$1/small [L,NS]
#RewriteRule ^([0-9]+)/normal profileImgs/$1/otherSize [L,NS]

在第二个(内部profileImgs)中:

# JPG
RewriteCond %{REQUEST_FILENAME}_small.jpg -f
RewriteRule ([0-9]+)/normal $1_small.jpg [NS,L]

# GIF
RewriteCond %{REQUEST_FILENAME}_small.gif -f
RewriteRule ([0-9]+)/normal $1_small.gif [NS,L]

# ANY
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([0-9]+)/normal noImg_small.jpg

# JPG
#RewriteCond %{REQUEST_FILENAME}_otherSize.jpg -f
#RewriteRule ([0-9]+)/normal $1_otherSize.jpg [NS,L]

# GIF
#RewriteCond %{REQUEST_FILENAME}_otherSize.gif -f
#RewriteRule ([0-9]+)/normal $1_otherSize.gif [NS,L]

# ANY
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule ([0-9]+)/normal noImg_otherSize.jpg

这允许我把其他尺寸......似乎是因为使用2 htaccess并且我认为可以做得更好,但这是我现在使用的解决方案。

答案 2 :(得分:0)

试试这个

RewriteCond %{DOCUMENT_ROOT}/profileImgs/$1_50\.jpg$ -f
RewriteRule ^profileImgs/[^/\.]+$ cache/gif$ [L,QSA]

RewriteRule ^profileImgs//([^/\.]+)$ profileImgs/.gif$ [L,QSA]