我有这样的文件结构:
ROOT
|----app/
|----app/init.php
|----public/
|----public/index.php
|----public/img/
|----public/js/
|----.htaccess
.htaccess
的规则会将所有REQUEST_URI
重定向到app/init.php
RewriteCond %{REQUEST_URI} !\.(css|js|ttf|woff|woff2|eot|otf|svg|png|jpg)$
RewriteCond public/%{REQUEST_FILENAME} !-f
RewriteCond public/%{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*)$ app/init.php [NC,L,QSA]
然后app/init.php
将使用require_once
在.html/.php
文件夹中获取相应的public
。
这很好用; .htaccess
中所有被排除的文件将在public/...
中被称为public/index.php
路径模式。
例如:
<link rel="stylesheet" href="public/css/layout.css">
<img src="public/img/abc.jpg" alt="">
但是,我不想在public/
.htaccess
前缀
我尝试添加
RewriteCond %{REQUEST_URI} \.(jpg)$
RewriteRule ^([^?]*)$ public/$1 [NC]
然而,它不起作用。更准确地说,当我在img/abc.jpg
文件中调用此public/index.php
时,它反馈的是500(内部服务器错误)。我猜测重定向有问题,但我不确定。
问题:如何在路径中调用css
或img
等等。{/ p>前缀为public/
的文件?
答案 0 :(得分:0)
在你的root中以这种方式.htaccess:
RewriteEngine On
# handle css, js and img files
RewriteRule (?:^|/)((?:img|css|js)/.+) public/$1 [L,NC]
# handle rest of the files
RewriteCond public/%{REQUEST_FILENAME} !-f
RewriteCond public/%{REQUEST_FILENAME} !-d
RewriteRule !^public/ app/init.php [L,NC]