我正在尝试为我的网站设置一个自己托pipe的cdn,但是我在htaccess文件中遇到了一些问题,并且无法使其工作。
目前,作为CDN的ftp服务器具有以下文件系统结构:
/ www/ www/htaccess www/index.html www/cdn/* incremental/* full/*
我的.htaccess现在看起来像这样:
Options All -Indexes <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] </IfModule> #This snippet basically stops anyone viewing any file on your site that begins with "hta", this will protect it and make it somewhat safer. <Files ~ "^.*\.([Hh][Tt][Aa])"> order allow,deny deny from all satisfy all </Files> <Files /cdn> Options +Indexes Satisfy Any Allow from all </Files>
我想允许访问cdn文件夹,并禁止任何其他文件夹访问,因为在增量和完整有我的主服务器的备份。
我一直在寻找规则来实现这种行为,但没有任何工作。
我必须允许索引在cdn文件夹中?
问候,并提前感谢(对不起,我的英语)
不是一个混蛋,但这听起来根本不像你正在build立一个CDN。 CDN的整个概念取决于从离他们最近的节点向用户提供内容,而用户不得不通过互联网跋涉到单个盒子。
在您的研究中,您可能无法find该做什么,因为您在添加这个“CDN”概念时,实际上并不相关。
我会回应以前的build议,将您的备份移出Web访问文件夹!
鉴于我相信你试图完成我build议你设置单独的虚拟主机,指定一个给定的FQDN的请求到一个文件夹。 这将使您更好地控制您的configuration,并确保数据仅适用于某些域。 所以你应该在你的apache2 / conf.d目录中添加一个新的文件(myconfig.conf,其实是任何东西),看起来像这样:
<VirtualHost *:80> DocumentRoot /mnt/www/DOMAIN_NAME/cdn ServerName cdn.DOMAIN_NAME </VirtualHost>
很明显,你可以使用任何你想要的文件路线,以上只是我个人的风格。 创build目录path/ mnt / www / DOMAIN_NAME / cdn,replace您正在使用的DOMAIN_NAME。 然后,只要您点击cdn.DOMAIN_NAME,它就只会提供/ mnt / www / DOMAIN_NAME / cdn目录中的文件。 显然,这需要对DNS进行一些调整,以确保所使用的DOMAIN_NAME的cdn子域指向此框。
编辑:不要忘了添加新的.conf文件后重新启动Apache!
希望这有助于。 虽然如果真正的CDN是你需要的,我build议你使用像s3 / cloudfront或Rackspace Cloudfiles这样的服务,而不是DIY解决scheme。 他们是非常实惠的select。