我在我的主网站的子域上制作了我的网站的新版本。我的主网站的网址为http://chirotremelo.be,我的子网域为http://v2.chirotremelo.be。我的服务器设置是public_html
文件夹,位于“旧”字样中。网站的版本,以及带图像的文件夹。此文件夹中还有一个v2
文件夹,其中包含我的新版本,该版本也使用标准网站中的图像。
我在本地计算机上开发新版本,在主站点内也有v2
文件夹。这样做我可以轻松更新它。
现在,由于我的v2
加载了v2
版本以及主网站版本中的资源,因此我将<base>
设置为http://chirotremelo.be/
。要包含v2
文件夹中的文件,我只需在特定网址前添加v2/
。
在本地,这很好用,但在我的实时版本中,它似乎不会加载例如http://chirotremelo.be/v2/newSite.css
。显示的错误是:
Imported resource from origin 'http://chirotremelo.be' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://v2.chirotremelo.be' is therefore not allowed access.
我已经四处寻找,但似乎无法立即找到任何解决方案。我认为它可能与我的.htaccess
文件有关,因此它包括在内:
php_value date.timezone Europe/Brussels
<FilesMatch ".php$">
AddHandler x-httpd-php54 .php
</FilesMatch>
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
## EXPIRES CACHING ##
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?chirotremelo\.be/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]
RewriteCond %{HTTP_HOST} ^www.chirotremelo.be [nocase]
RewriteRule ^(.*) http://chirotremelo.be/ [last,redirect=301]
我知道这可能不会很多,但我以前从未使用过子域名。我已成功使用http://v2.chirotremelo.be/newSite.css
,但需要使用非子域的基础来加载仅在主站点上可用的内容。
答案 0 :(得分:2)
此问题称为跨源资源共享(简称CORS
)。您将在此处找到许多问题,特别是对于异步JavaScript请求。
这是某种与浏览器相关的问题;服务器仍将提供所请求的文件,但浏览器阻止它以防止网站从“坏”网站加载“坏”内容。您需要发送带有服务器响应的CORS-Header以允许浏览器允许它。
在您的情况下(因为这不是生产网站),我会建议您使用以下解决方案:
您可以尝试添加
<IfModule mod_headers.c>
Header add Access-Control-Allow-Origin "*"
</IfModule>
到您的.htaccess
文件。 (注意,这需要启用Apache中的mod_headers
,但我想这是默认启用的。)
这不是最佳解决方案,尤其是可能有更优雅的解决方案。但它适用于这种特殊情况(测试/测试网站)。