4

我正在使用 Silex“微框架”来为我的应用程序进行路由。我目前被困在如何用 .htaccess 重写 url。

标准 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]

有什么建议么?谢谢!

4

4 回答 4

2

我现在遇到了同样的问题,解决方案是将 .htaccess 内容更改为:

FallbackResource /index.php

所以在你的情况下

FallbackResource /web/index.php

这对我有用,我希望有人会发现它有用。

于 2015-11-19T14:53:30.243 回答
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>

正确的做法是设置您的DocumentRootto /path/to/your/app/web

于 2013-10-28T02:16:33.527 回答
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>
于 2014-07-23T08:56:13.013 回答
0

这样的事情应该可以解决问题:

RewriteEngine On
RewriteBase /

RewriteRule ^myapp/web/index.php/  /myapp/                 [R=301,L]
RewriteRule ^myapp/                /myapp/web/index.php/   [L]
于 2013-03-17T21:03:57.157 回答