以前使用命令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
可以帮到我吗?感谢
答案 0 :(得分:0)
你做不到。 RewriteRules只能重写DocumentRoot
内的位置。你为什么要这样做呢?符号链接解决方案具有较少的开销,因此比RewriteRule解决方案更快。
答案 1 :(得分: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]
应该也可以。