文件到php的相对路径包括htaccess的路径

时间:2014-04-20 19:47:54

标签: php css apache .htaccess

我有root/index.php。在index.php里面我有<?php include __DIR__.'../site/index.php'; ?>

example.com的根目录是root目录。

当我访问example.com/style.css时,我找不到404文件,因为style.css位于site目录中而不在root目录中。

如何使用htaccess在site目录而不是root目录中查找文件?

欢迎其他建议。

修改

目录rootsite是兄弟姐妹。

2 个答案:

答案 0 :(得分:0)

据我所知,.htaccess无法做到这一点。但是,您可以使用PHP包含属于Web根目录的内容,就像使用index.php文件一样。

布局(来自我可以收集的内容)。

.
├── root
│   └── index.php
└── site
    └── index.php
    └── style.css

您可以使用.htaccess指向/root/index.php处的所有请求,然后使用includefile_get_contents或类似位置从/site输出请求。

虽然我可以理解从Web根目录下面提供PHP文件,但为什么要为CSS执行此操作?您可能需要重新考虑目录结构,并将Web资产(如javascript和样式表)放在Web根目录之上。

答案 1 :(得分:0)

s1.coms2.com指向root目录。 s1.comsite1获取文件,s2.comsite2获取文件。

药结构:

├── root
│   └── index.php
|   └── .htaccess
├── site
|   └── *
├── site1
|   └── *
└── site2
    └── *

.htaccess(在root中):

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

php index.php中的root}:

<?php
$paths = array(
    's1.com' => __DIR__ . '/../site1',
    's2.com' => __DIR__ . '/../site2'
);
$path = isset($paths[$_SERVER['SERVER_NAME']]) ? $paths[$_SERVER['SERVER_NAME']] : __DIR__ . '/../qioqia.com/site';
if (array_filter(explode('/', $_SERVER['REQUEST_URI']))) {
    $request = str_replace(strrchr($_SERVER['REQUEST_URI'], '?'), "", $_SERVER['REQUEST_URI']);
    $ext = strrchr( $request, '.');
    if ($ext === false) include $path . '/index.php';
    else {
        $mimes = array(
            '.jpg' => 'image/jpeg',
            '.css' => 'text/css',
            '.js' => 'application/javascript',
            '.ico' => 'image/x-icon'
        );
        $mime = isset($mimes[$ext]) ? $mimes[$ext] : 'application/octet-stream';
        header('Content-Type: ' . $mime);
        echo file_get_contents($path . $request);
    }
} else include $path . '/index.php';