我有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
目录中查找文件?
欢迎其他建议。
修改
目录root
和site
是兄弟姐妹。
答案 0 :(得分:0)
据我所知,.htaccess
无法做到这一点。但是,您可以使用PHP包含属于Web根目录的内容,就像使用index.php
文件一样。
布局(来自我可以收集的内容)。
.
├── root
│ └── index.php
└── site
└── index.php
└── style.css
您可以使用.htaccess
指向/root/index.php
处的所有请求,然后使用include
或file_get_contents
或类似位置从/site
输出请求。
虽然我可以理解从Web根目录下面提供PHP文件,但为什么要为CSS执行此操作?您可能需要重新考虑目录结构,并将Web资产(如javascript和样式表)放在Web根目录之上。
答案 1 :(得分:0)
域s1.com
,s2.com
指向root
目录。 s1.com
从site1
获取文件,s2.com
从site2
获取文件。
药结构:
├── 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';