用于 Silex 的 Htaccess

Htaccess for Silex

我是第一次尝试 Silex,但我无法通过友好 URL 的简单呼叫来正常工作,但如果我使用非友好 URL 它完成了它的工作。我正在本地主机上进行试验,域是

localhost/site

结构如下所示:

site
|- ...
|- .htaccess
|- /php/
   |- rest.php

.htaccess 代码:

<IfModule mod_rewrite.c>
  Options -MultiViews
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^rest/(.*)$ php/rest.php/ [QSA,L]
</IfModule>

如果我试着打电话

localhost/site/php/rest.php/anything

它工作正常并且 returns 预期值,但是如果我尝试这个

localhost/site/rest/anything

它一直在说

No route found for "GET /site/rest/anything"

当它工作的路线必须是/anything

我试过:

谢谢。

我实际上认为这是不可能的,因为 Silex 不会查找 /,并且只能看到地址栏中的内容。 (除非 rest.php 驻留在被请求的目录中。)

您最好的选择可能是重新考虑您的目录结构。如果 Silex 的 Web 根目录是 php 文件夹,则应向 localhost/site/php/anything 发出请求,.htaccess 文件位于该目录中。

或者,只需将 php 文件夹重命名为 rest,并确保使用以下规则(.htaccess 文件保存在 rest 目录中):

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteBase /site/rest/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ rest.php [L]
</IfModule>

最后,您可以将 Silex 中的路由定义为 site/rest/{anything},而无需更改当前设置。但是,这很麻烦,这使得上一个选项成为最佳选项。