图片的友好网址

问题描述:

请建议我把什么放入.htaccess文件。图片的友好网址

我对服务器http://domain.tld/images/anyimage.anyextension

PNG,GIF,JPG图像想让网址像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] 

不知道如何使它更加友好,一边。你可以在你的文档根目录尝试添加这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.anyextension所有链接更改为http://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。这里有两件完全不同的事情。一个涉及浏览器,另一个涉及服务器上的内容。请参阅this answer that explains how they are different的顶部。

您拥有的规则将不起作用。第一张:

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

永远不会匹配。用于匹配htaccess文件中的RewriteRule的正则表达式的URI具有删除的前导斜杠,因此没有URI将以/开头。你需要摆脱它。

其次,一旦你这样做,你会得到一个500内部服务器错误,因为你的规则会导致内部无限循环。您需要与%{THE_REQUEST}匹配,以确保浏览器实际上请求的是其中包含/images/路径的URL,而不是内部重写的内容。

+0

不知道为什么,但在应用此规则后,它不会将它们从http://domain.tld/images/anyimage.anyextension更改为http://domain.tld/anyimage.anyextension。我自己制定了以这种方式更改链接的代码,但无法找到将其更改回服务器的代码。请参阅我的文章末尾编辑。 – slfkjsdlfkj 2012-08-15 04:37:56

+0

所以我的方法根本不起作用?乔恩我再次检查你的方法,似乎它的工作。你是上帝!没有正确的我想要的。只是我第一次不明白你方法的原理。再次感谢!你还记得我问过删除.html扩展名和查询字符串规则之间的冲突吗?我形容这是一个单独的问题。请你也可以在那里帮助:[链接](http://*.com/questions/11963856/removing-html-extension-rules-conflict) – slfkjsdlfkj 2012-08-15 06:01:48

+1

@ user1586029我快速看了一下,但我不知道为什么SSI不工作。如果我发现错误,我会在这个问题上发布一些信息。同时,如果这些答案是正确的,你应该[接受他们作为答案](http://meta.stackexchange.com/a/5235/171219)。这是这个网站的工作方式,人们不太可能帮助那些接受率低的人,并且接受答案会将问题标记为已解决,因此当其他人遇到同样的问题时他们知道有答案。 – 2012-08-15 06:08:12