设置本地虚拟机与实时服务器相同

时间:2013-04-09 17:52:02

标签: apache mod-rewrite rewrite vmware relative-path

我曾经使用XAMPP在本地开发,但现在我正在切换到运行Ubuntu的VMware虚拟机,用于我的本地开发。除了一件事之外,所有内容都已设置并运行本地版本的网站... css / style.css.php中有一个脚本,其中包含以下行,但需要根据哪个服务器进行不同的编写上。

fopen("css/style.inc.css"); // Works on the live server

fopen("../css/style.inc.css"); // Works on the local server

fopen("/css/style.inc.css"); // DOES NOT work on either server

实时和本地计算机上的文件结构相同 可能与问题相关的是不直接请求脚本,而是在请求/css/style.css时通过.htaccess映射。 .htaccess文件看起来像这样

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !=/favicon.ico
    RewriteRule ^(.*)$ rewrite.php?q=$1 [L,QSA]
</IfModule>

并且rewrite.php文件看起来像这样......

if($_GET["q"] == "css/style.css"){
    include("css/style.css.php");
}

如何开始诊断2台服务器上的设置有何不同,以便我可以将它们设置为相同?

2 个答案:

答案 0 :(得分:0)

第一条路径:`fopen(“css / style.inc.css”);建议你的CSS文件夹在你的根目录中,如下所示:

-index.php //or whatever file has this line
-css
    -style.inc.css

第二条路径建议采用以下结构

-css
    -style.inc.css
-some_web_folder
    -index.php

创建相同的文件结构,一切都应该没问题。

答案 1 :(得分:0)

解决!首先,我偶然发现了这篇优秀的文章http://css-tricks.com/php-include-from-root/,让我想到了$ _SERVER ['DOCUMENT_ROOT']的确切设置。所以我编写了一个脚本,只是将其打印到屏幕上,这有助于我诊断我已经在地址末尾设置了我的本地虚拟机斜杠。

/var/www/vhosts/example.com    <--- What the live site looked like
/var/www/vhosts/example.com/   <--- What the local site looked like

所以我编辑了/etc/apache2/sites-available/example.com并从DocumentRoot中删除了斜杠,然后重写了我的包含代码,如下所示:

$path = $_SERVER['DOCUMENT_ROOT'];
fopen($path.'/css/style.inc.css');

显然这对未来来说是更好的做法所以我很高兴能够学到新的标准。

(我可以获得一个徽章来回答我自己的问题吗 Pats self in back