8

我有一个网站example.com/test/。假设该网站的布局如下:

example.com
└── test/
    ├── assets/
    │   └─ stylesheet.css
    │
    ├── .htaccess
    └── index.php

index.php这是路由器,现在显然很酷。

example.com/test/stylesheet.css每当assets/用户请求一个像index.php. 理想情况下,以下方法会起作用:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond assets/%{REQUEST_FILENAME} -f
RewriteRule ^(.+)$ assets/$1

但由于%{REQUEST_FILENAME}是绝对路径,assets/%{REQUEST_FILENAME}结果是类似assets/home/public/test/stylesheet.css. %{REQUEST_URI}也好不到哪里去:它变成了assets/test/stylesheet.css. 我也看了这个问题,但答案也没有奏效。

有什么方法可以在不使用 PHP 的情况下做到这一点?(如果没有,我将只使用 PHP 的readfile,但我不想担心 LFI 或任何东西。)

4

1 回答 1

9

尝试使用the %{DOCUMENT_ROOT}%{REQUEST_URI}vars

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/assets/%{REQUEST_URI} -f
RewriteRule ^(.+)$ assets/$1

编辑:我明白了,试试这个:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/([^/]+)/(.+)$
RewriteCond %{DOCUMENT_ROOT}/%1/assets/%2 -f
RewriteRule ^(.*)$ /%1/assets/%2 [L,R]
于 2012-08-20T01:48:07.157 回答