对于图像友好的URL(Friendly URL for images)

2019-10-17 03:22发布

请建议我该怎么投入.htaccess文件。

我有PNG,GIF,服务器上的JPG图片http://domain.tld/images/anyimage.anyextension

想要让网址就像一个更加友好http://domain.tld/anyimage.anyextension


这是我现在有。 如描述的第一两串更改链接。 但去年字符串不改回服务器。

RewriteCond %{REQUEST_URI} ^/images/(.+)(\.gif|\.jpg|\.png)$ [NC]
RewriteRule ^image/(.+)$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.+)$ /images/$1 [L]

如果我添加

RewriteCond %{REQUEST_URI} ^/([^/.]+\.(png|gif|jpg))$ [NC]
RewriteCond %{DOCUMENT_ROOT}/image/%1 -f
RewriteRule ^([^/.]+\.(png|gif|jpg))$ /image/$1 [L,NC]

以前的查询字符串规则后,就在那时图像不开。 如果之前没有任何问题。 什么可能呢? 你有一个想法如何解决? 最后一个字符串RewriteRule ^/?(.+)$ /?$1 [L]导致这种冲突

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?([^\ ]+) [NC]
RewriteRule ^$ /%1? [R=301,L]
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.+)$ /?$1 [L]

Answer 1:

不知道如何使它更加友好,除了它是短。 你可以尝试添加这在你的文档根htaccess文件:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/([^/.]+\.(png|gif|jpg))$ [NC]
RewriteCond %{DOCUMENT_ROOT}/images/%1 -f
RewriteRule ^([^/.]+\.(png|gif|jpg))$ /images/$1 [L,NC]

然后你就可以从所有链接改变http://domain.tld/images/anyimage.anyextensionhttp://domain.tld/anyimage.anyextension

第一个条件检查,以确保该请求是针对anyimage.anyextension ,只要扩展名是不区分大小写的PNG,GIF,JPG或。

第二个条件检查,以确保所请求的图像实际上是在存在/images/目录。


RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /images/(.+)(\.gif|\.jpg|\.png) [NC]
RewriteRule ^image/(.+)$ /$1 [R=301,L]

该浏览器重定向到非/图片/ URL。 有2个完全不同的东西怎么回事。 一个与浏览器与服务器上的内容的其他交易的交易。 见的顶部这样的回答,说明他们是如何不同 。

你有这些规则将无法正常工作。 第一:

RewriteRule ^/(.+)$ /images/$1 [L]

永远不会匹配。 URI的用于匹配htaccess的文件重写规则的正则表达式已经领先斜线去除,所以没有URI就要开始了/ 。 你需要摆脱它。

其次,一旦你做,你会得到一个500内部服务器错误,因为你的规则会导致内部无限循环。 你需要来匹配%{THE_REQUEST}确保浏览器实际上是要求用一个URL /images/在它的路径,不是已经被内部被重写。



文章来源: Friendly URL for images