1

我想检查是否存在带有“jpg”扩展名的文件,否则检查“gif”是否存在,否则加载默认图像。全部使用 mod_rewrite,我阅读了很多示例,并且都是相同的。我想检查一个正则表达式 url。现在我的 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]

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

4

3 回答 3

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]
于 2012-10-01T05:34:28.193 回答
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,我认为这可以做得更好,但这是我现在使用的解决方案。

于 2012-10-03T04:38:23.083 回答
0

尝试这个

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

RewriteRule ^profileImgs//([^/\.]+)$ profileImgs/.gif$ [L,QSA]
于 2012-10-01T04:52:29.277 回答