Lat*_*tox 9 .htaccess mod-rewrite url-rewriting
说我有以下文件:
http://www.example.com/images/folder/image.jpg
我想服务它
http://s1.example.com/folder/image.jpg
如何进行htaccess重写指向它呢?
例如,我创建了一个子域s1.example.com,然后在该子域上,我添加了一个htaccess规则来指向任何文件,从http://www.example.com/images/中提取它
以这种方式提供文件是否可以作为来自无Cookie域的服务内容?
nit*_*k01 18
首先让我谈谈无cookie域的概念.通常,当通过http请求任何内容时,任何相关的cookie都会随请求一起发送.Cookie取决于它们来自哪个域.使用无cookie域的想法是,您将不具有cookie的静态内容(例如图像)重定位到单独的域,以便不会使用该请求发送cookie.这减少了少量的流量.
这样做有多少取决于页面的类型.你拥有的图像越多,你获得的就越多.如果您的网站加载了大量小图片,例如头像或图片缩略图,您可能会获得很多收益.相反,如果您的网站不使用任何cookie,您将无济于事.如果您的页面仅使用少量图像,那么完全有可能您的页面加载速度不会明显加快,无论如何都会在页面加载之间缓存这些图像.
要记住的一点是,设置的cookie example.com也将与请求一起发送,s1.example.com因为" s1."是子域example.com.您需要使用www.(或您选择的任何其他子域)才能分隔cookie空间.
其次,如果您认为无Cookie域实际上值得尝试,那么让我们来谈谈实现.
Shikhar的解决方案很糟糕!虽然解决方案似乎在表面上起作用,但它实际上违背了使用无cookie域的目的.对于每个图像,首先s1.尝试URL.然后,s1.URL会重定向到www.域,从而触发第二个http请求.无论你如何看待它,这都是一种损失.你需要的是一个重写,它在Web服务器内部更改URL,而浏览器甚至没有意识到.
为简单起见,我假设所有域都指向同一目录,因此www.example.com/something= example.com/something= s1.example.com/something= blub.example.com/something.如果你真的需要在" www.example.com/images"中物理存储图像,这会使事情变得更简单.
我推荐一个看起来像这样的.htaccess:
# Turn on rewrites
RewriteEngine On
# Rewrite all requests for images from s1, so they are fetched from the right place
RewriteCond %{HTTP_HOST} ^s1\.example\.com
# Prevent an endless loop from ever happening
RewriteCond %{REQUEST_URI} !^/images
RewriteRule (.+) /images/$1 [L]
# Redirect http://s1.example.com/ to the main page (in case a user tries it)
RewriteCond %{HTTP_HOST} ^s1\.example\.com
RewriteRule ^$ http://www.example.com/ [R=301,L]
# Redirect all requests with other subdomains, or without a subdomain to www.
# Eg, blub.example.com/something -> www.example.com/something
# example.com/something -> www.example.com/something
RewriteCond %{HTTP_HOST} !^www\.example\.com
RewriteCond %{HTTP_HOST} !^s1\.example\.com
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
# Place any additional rewrites below.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5860 次 |
| 最近记录: |