Php 如何使用mod_rewrite类似ln-s Unix创建虚拟文件夹
以前使用命令ln创建虚拟文件夹Php 如何使用mod_rewrite类似ln-s Unix创建虚拟文件夹,php,apache,unix,mod-rewrite,ln,Php,Apache,Unix,Mod Rewrite,Ln,以前使用命令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_重写 我试过了 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_
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_重写
我试过了
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
你能帮我吗?谢谢你不能。重写规则只能重写到
DocumentRoot
中的位置。你为什么要这么做?符号链接解决方案的开销较小,因此比重写规则解决方案更快。您需要使用绝对路径
Alias /assets/ /www/app/assets/
<Directory "/www/app/assets/">
Require all granted
</Directory>
应该也能工作。您从未见过使用符号链接的框架,所以我认为使用mod_(li3)的框架建议对资产使用符号链接。它有一个默认的内置路由器,让PHP为开发目的提供所请求的文件,但他们建议在生产环境中不要这样做,因为这是对PHP线程的浪费。
RewriteEngine On
RewriteCond /www/public/%{REQUEST_FILENAME} !-f
RewriteCond /www/public/%{REQUEST_FILENAME} !-d
RewriteRule ^/assets/(.*)$ /www/app/assets/$1 [L]