Apache PHP相对路径无法识别

时间:2016-03-25 22:14:58

标签: php apache .htaccess ushahidi

我坚持安装Ushahidi平台客户端。由于mod重写,我得到了API工作。现在我正在设置平台客户端,但我没有成功。

所以这是我的html文档设置:

HTML
index.html
about.html
platform-client<〜子目录
服务器
www
.htaccess
index.html

这是我的平台客户端中的.htaccess:

RewriteEngine on

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ /index.html  [PT,L]

这是platform-client / server / www / index.html:

<!doctype html>
<html lang="en" ng-strict-di>
<head ng-controller="PageMetadata">
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="/fonts/Lato/css/fonts.css" rel="stylesheet" type="text/css">
    <!-- @todo minify CSS -->
    <link rel="stylesheet" href="/css/style.css" ng-href="{{rtlEnabled ? '/css/rtl-style.css' : '/css/style.css'}}">
    <link rel="stylesheet" href="/css/vendor.css">
    <script src="/config.js"></script>

    <title ng-bind-template="{{pageTitle}} {{siteTitle}}"></title>
    <meta name="description" content="{{pageDescription}}">
    <meta name="keywords" content="{{pageKeywords}}">
    <meta name="robots" content="{{pageRobots}}">
    <base href="/">
</head>

<body ng-class="{ rtl : rtlEnabled }" class="has-dynamic-header" canvas>
    <div id="bootstrap-loading">
        <header class="header header-full overlay" role="banner">
            <div class="container">
                <div class="color-overlay">
                    <div class="parallax">
                        <h1 class="beta"><i class="fa fa-refresh fa-4 fa-spin"></i></h1>
                    </div>
                </div>
            </div>
        </header>
    </div>

等...

当我运行网站时,我收到错误显示而不是正确错误。当我也检查元素时,我看到/css/style.css指向我的根目录,即域。

 www.example.com/css/style.css

它应该是:

www.example.com/platform-client/server/www/css/style.css

更新:这是我的httpd.conf:

NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName example.com
ServerAlias www.example.com
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@example.com
DocumentRoot /var/www/html/platform-client/server/www
ServerName example.com/platform-client/server/www
<Directory "/var/www/html/platform-client/server/www">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

我的设置有问题吗?我真的需要你的帮助'因为我已经修了近一个星期而没有成功。我很乐意感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

因此,要解决此问题,请将以下A记录添加到DNS条目中:

*    A    <your host's ip-address>

您网域的每个可能的子域名现在都指向同一个主机。您的托管服务提供商可能允许您通过某些配置面板添加DNS条目,例如cpanel。如果他们这样做,请小心你改变了什么。做出错误的更改可能会让您的主机停播数小时。如果他们不允许&#34; *&#34;作为您的子域名,然后只需输入您需要的特定子域名。

然后,在httpd.conf中包含以下两个VirtualHosts - 理想情况下包含在/ etc / apache2 / sites-enabled文件夹中,但您可以担心以后美化配置:

<VirtualHost *:80>
    ServerAdmin webmaster@<yourdomain>.com
    DocumentRoot /var/www/html
    ServerName www.<yourdomain>.com
    ServerAlias <yourdomain>.com
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@<yourdomain>.com
    DocumentRoot /var/www/html/platform-client/server/www
    ServerName <subdomain>.<yourdomain>.com
</VirtualHost>

理想情况下,您还应该将两个文件夹结构分开,以便它们看起来像这样:

/var
    /www
        /<yourdomain>.com
            /www
                /htdocs
                    index.html and everything
                        else for your default
                        website goes here
            /<subdomain>
                /htdocs
                    index.html and everything
                        else for your Ushithingy
                        installation goes here

并相应地调整虚拟主机中的docroots。你应该这样做的原因是,只要一个网站在另一个网站的docroot内,它仍然可以通过第一个虚拟主机定义到达第二个网站 - 只有那时页面看起来都搞砸了因为页面中的docroot和绝对hrefs不同。有序的目录结构的另一个优点是,您可以使用mod_vhost_alias为一个简单的虚拟主机定义定义许多子域的网站。但是,再次,那是为了以后。

如果你已经完成了,请重新启动你的apache服务器,它应该都很好。