2013-03-17 116 views
4

我爲我的應用程序的路由目的使用Silex「微型框架」。 我目前被困在如何用.htaccess重寫URL。Silex路由.htaccess webroot

標準Silex的網址:localhost/myapp/web/index.php/hello/name

我希望它看起來像:localhost/myapp/hello/name

用下面的.htaccess代碼,我能夠省略/index.php/部分。但我仍然需要使用/web/部分。

RewriteEngine On 
RewriteCond %{THE_REQUEST} /myapp/web/index.php/ 
RewriteRule ^/myapp/web/index.php/(.*) /myapp/$1 [R=301,L] 
RewriteCond %{REQUEST_URI} !/myapp/web/index.php/ 
RewriteRule ^(.*)$ /myapp/web/index.php/$1 [L] 

有什麼建議嗎? 謝謝!

+0

我陷入了同樣的問題。似乎沒有任何工作。 – Kandinski 2013-12-15 05:46:04

回答

0

像這樣的東西應該做的伎倆:

RewriteEngine On 
RewriteBase/

RewriteRule ^myapp/web/index.php/ /myapp/     [R=301,L] 
RewriteRule ^myapp/    /myapp/web/index.php/ [L] 
1

來源:http://silex.sensiolabs.org/doc/web_servers.html

<IfModule mod_rewrite.c> 
    Options -MultiViews  
    RewriteEngine On 
    RewriteBase /web 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [QSA,L] 
</IfModule> 

權將設置您DocumentRoot/path/to/your/app/web

0

我有一個類似的問題,與解決以下

<IfModule mod_rewrite.c> 
Options -MultiViews 
RewriteEngine On 
RewriteBase /web 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)? index.php/$1 [QSA,L] 
RewriteRule ^/?$ /web/ [R=301] 
</IfModule> 
2

我現在已經面臨着同樣的問題,解決辦法是改變的.htaccess內容:

FallbackResource /index.php 

所以在你的情況將是

FallbackResource /web/index.php 

這對我有用,我希望有人會覺得它有用。

+0

那麼,只適用於Apache> = 2.2.16 – mTorres 2015-11-23 11:42:17