我試圖將所有請求路由到/web/index.php
(前端控制器),同時直接提供靜態文件(如果存在)。使.htaccess使用前端控制器將所有請求重寫爲/ web?
以下.htaccess file
是從Symfony 2應用程序中提取的,並且看起來可以正常工作。請求發送到./index.php
,我可以訪問靜態文件,如./web/css/style.css
。我正在共享主機(不是一個好的),而且這個.htaccess
似乎是唯一的一個工作(this將導致500錯誤)。
如何將所有請求路由到/web
文件夾?似乎我需要改變E=BASE
變量中的某些內容,我試過[E=BASE:%1/web]
,但它不起作用。
我對重寫規則有一點了解,你能指點我到正確的方向嗎?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^index\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
# Rewrite all other queries to the front controller.
RewriteRule .? %{ENV:BASE}/index.php [L]
</IfModule>
是的前控制器工作,但不適用於靜態文件;即/ /ss/style.css在/web/css/style.css中不起作用。 – gremo 2014-08-28 19:28:33
啊我明白了。然後,我會用另一個「嘗試」更新我的答案。 – 2014-08-28 19:30:25