我一直在嘗試完成相同的許多框架:通過.php(即index.php)處理請求,同時保留包含所有元素的/application/public
文件夾應該顯示它們存在的情況。例如:如何重寫規則,如果文件存在其他地方
folder /application/public
total 28K
92897619 drwxr-xr-x 5 1001 1001 4.0K Jul 29 00:07 .
92897616 drwxr-xr-x 7 1001 1001 4.0K Jul 28 23:31 ..
92897754 -rw-r--r-- 1 1001 1001 15 Jul 29 00:07 .htaccess
92897733 drwxr-xr-x 2 1001 1001 4.0K Jul 28 23:31 images
92897620 -rw-r--r-- 1 1001 1001 696 Jul 28 23:58 index.php
92897625 drwxr-xr-x 2 1001 1001 4.0K Jul 28 23:31 javascript
92897734 drwxr-xr-x 2 1001 1001 4.0K Jul 28 23:31 stylesheets
folder /:
total 24K
92831996 drwxr-xr-x 4 1001 1001 4.0K Jul 29 02:44 .
91980897 drwxr-xr-x 5 0 0 4.0K Jul 6 00:30 ..
92831975 -rw-r--r-- 1 1001 1001 360 Jul 29 02:44 .htaccess
92897616 drwxr-xr-x 7 1001 1001 4.0K Jul 28 23:31 application
92832733 -rw-r--r-- 1 1001 1001 696 Jul 29 00:02 index.php
92897739 drwxr-xr-x 6 1001 1001 4.0K Jul 28 23:31 system
如果沒有爲example.com/images/a.jpg
的請求,/application/public/images/a.jpg
應當被顯示,由於它的存在。否則,index.php將獲得?uri=images/a.jpg
作爲查詢字符串。
考慮到這一點,我寫了下面的.htaccess(放在/):
Options +FollowSymLinks +Indexes
RewriteEngine on
RewriteBase/
RewriteCond %{DOCUMENT_ROOT}/application/public%{REQUEST_URI} -f
RewriteCond %{DOCUMENT_ROOT}/application/public%{REQUEST_URI} -d
RewriteRule ^(.*)?$ application/public/$1 [L]
RewriteRule ^(.+)?$ index.php?uri=$1 [PT,QSA,L]
儘管如此,請求在/application/public
任何存在的請求重定向index.php
(例如,example.com/images/a.jpg
最終被example.com/index.php?uri=images/a.jpg
)。
Apache日誌只顯示以下(請求時example.com/javascript/index.php
):
文件不存在:/家庭/ jbayardo/WWW /測試/ JavaScript的
這一點,你可以想像,把我留在空白處。
這完美地工作,非常感謝你。 –