PHP url函数和子域

时间:2011-11-27 13:54:31

标签: php subdomain

我有一个网站thenoblesite.com。它有一些子域,即

  

download.thenoblesite.com
  wallpaper.thenoblesite.com
  等

子域的页面存在于主htdocs文件夹中,即

  

httpdocs / download< - download.thenoblesite.com
  httpdocs / wallpaper< - wallpaper.thenoblesite.com

问题是我使用$_SERVER['DOCUMENT_ROOT'] . '/css';用于css文件夹和其他常见文件夹(图形,包含,脚本等)。但是,在子域名页面download.thenoblesite.com中,$_SERVER['DOCUMENT_ROOT']将引用download.thenoblesite.com根文件夹,而不是存在css,图形和包含文件夹的主thenoblesite.com根文件夹。

我必须在所有子域上单独放置相同的图形,css和包含文件夹。每次我更新网站时,我都必须将公共文件夹复制到所有子域文件夹。

另一个相关的问题是我必须对大尺寸的下载文件夹使用绝对链接。 VLC媒体播放器我必须使用thenoblesite.com/download/vlc.exe或者我还必须复制所有子域文件夹中的大尺寸下载文件夹。这种方法不必要地增加了网站的大小,在我更新网站时产生了混乱,并且看起来不是很好的编程习惯。是否有任何可能的PHP解决方案,以便我可以使用相同的CSS,图像,下载和包含所有子域的文件夹....

2 个答案:

答案 0 :(得分:7)

我不确定这是否是您可能感兴趣的内容,但您可以随时创建一个新的子域并将其称为样式。[域]并在配置文件中创建一个新变量并指向它。通过这种方式,您可以将所有图像和css文件等存储在一个地方,如果您的流量达到峰值,您可以随时将该子域移动到CDN等,以便可以自定义。

<强>更新

好,所以你可以在配置文件中使用一个新变量,如下所示:

$_config['http'] = 'http://www.yousite.com/';

现在您可以使用此变量指向主站点上的所有下载等,而不是每个指向子域的文件夹。如果你想要更灵活,你还可以添加一些css或js文件夹,如:

$_config['http'] = 'http://www.yousite.com/';
$_config['css'] = $_config['http']."css";
$_config['js'] = $_config['http']."js";

如果您决定移动文件或只是移动某个文件夹等,上面的解决方案也会对您有所帮助。如果您可以采用它,这是一个很好的做法。

答案 1 :(得分:1)

您可以在htaccess(或服务器配置)中使用别名:

Alias /images /home/username/public_html/images

如果不可能,您可以通过htaccess重写对/ images的所有请求:

# Untested - should get you on the right track though
RewriteEngine On
RewriteRule ^/images/(.*)$ http://yourdomain.com/images/$1 [R=301,L]