1

以前使用命令 ln 创建虚拟文件夹。

cd public
ln -s ../app/assets/ assets

~ public > ls -l
lrwxr-xr-x  1 carlosmontalvo  admin   14 May 15 12:21 assets -> ../app/assets/

但我想用 mod_rewrite

我用

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?assets(.*) ../app/assets$1 [P] #here
RewriteRule ^(.*)$ index.php [QSA,L]

但这不起作用

树目录

├── app
│    └─ assets
│       ├── images
│       ├── javascripts
│       │   └── application.js
│       └── stylesheets
│           └── application.css
├── public
│   ├── 404.html
│   ├── 422.html
│   ├── 500.html
│   ├── assets -> ../app/assets/
│   ├── index.php
│   └── robots.txt

可以帮助我吗?谢谢

4

2 回答 2

0

你不能。RewriteRules 只能重写到DocumentRoot. 你为什么要这样做呢?符号链接解决方案的开销较小,因此比 RewriteRule 解决方案更快。

于 2013-05-16T07:02:32.510 回答
0

您需要使用绝对路径。

Alias /assets/ /www/app/assets/

<Directory "/www/app/assets/">
Require all granted
</Directory>

如果 Apache 可以访问这些文件,应该可以工作。

没有理由使用mod_rewrite,但是:

RewriteEngine On
RewriteCond /www/public/%{REQUEST_FILENAME} !-f
RewriteCond /www/public/%{REQUEST_FILENAME} !-d
RewriteRule ^/assets/(.*)$ /www/app/assets/$1 [L]

应该也可以。

于 2014-11-14T19:21:45.613 回答