htaccess获取没有路径的文件和扩展名

时间:2016-03-26 14:03:15

标签: apache .htaccess redirect mod-rewrite

我试图解决这个问题很长时间但仍然无法解决。我试过了htaccess get filename without path,但它对我没用。

这是我的目录

/www
|-- /other.org
|-- /example.com
    |-- /sub 
        |-- .htaccess
        |-- success.html
        |-- /imgs
            |-- photo.png

http://example.com/sub/imgs处有对该图片或文件的请求时,我试图查找http://example.com/sub中是否存在图片。如果存在,则用户将被重定向到success.html。但我不能这样做。

例如,如果我输入浏览器

http://example.com/sub/photo.png

它检查/sub/imgs/photo.png中是否存在文件photo.png或任何类型的图像,它不存在且不应存在于/ sub目录中。

http://example.com/sub/imgs/photo.png

重定向的输出将是success.html(如果存在)。

http://example.com/sub/success.html

我试过

RewriteCond %{DOCUMENT_ROOT}/sub%{REQUEST_URI} -f
RewriteRule (.*)\.(gif|jpg|jpeg|png)$ success.html

%{REQUEST_URI}/sub/photo.png,因此输出为http://example.com/sub/imgs/sub/photo.png。在最后一个斜杠(/)之后,没有任何可以获取文件名或任何内容的请求。是否可以只获取文件名photo.png,以便我可以这样做:

RewriteCond %{DOCUMENT_ROOT}/sub/imgs%{FILE_NAME} -f
RewriteRule (.*)\.(gif|jpg|jpeg|png)$ success.html

有没有办法让这个工作?

1 个答案:

答案 0 :(得分:1)

您可以在sub/.htaccess中尝试此规则:

RewriteEngine On
RewriteBase /sub/

RewriteCond %{DOCUMENT_ROOT}/sub/imgs/$1 -f
RewriteRule ^(.+\.(?:jpe?g|png|gif|tiff|ico))$ success.html [L,NC]