首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Htaccess for Silex

Htaccess for Silex
EN

Stack Overflow用户
提问于 2015-05-04 15:37:06
回答 1查看 482关注 0票数 1

我第一次尝试Silex,但是我不能用一个友好的URL得到一个简单的调用来正常工作,但是如果我使用一个不友好的URL,它就会完成它的工作。我正在本地主机上做实验,这个域是

本地主机/地点

结构看起来是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
site
|- ...
|- .htaccess
|- /php/
   |- rest.php

.htaccess代码:

代码语言:javascript
代码运行次数:0
运行
复制
<IfModule mod_rewrite.c>
  Options -MultiViews
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^rest/(.*)$ php/rest.php/$1 [QSA,L]
</IfModule>

如果我试着打电话

localhost/site/php/rest.php/任何东西

它正常工作并返回预期值,但是如果我尝试这样做的话

本地主机/站点/rest/任何东西

只是不停地说

没有找到用于"GET /site/rest/anything"的路由

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

我试过:

  • 将.htaccess移动到/php/
  • 将RewriteRule更改为RewriteRule ^ rest.php [QSA,L]
  • 将RewriteBase更改为RewriteBase /site/php//site/

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-04 16:54:50

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

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

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

代码语言:javascript
代码运行次数:0
运行
复制
<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},而无需更改当前的设置。不过,这很麻烦,这使得前面的选项成为最好的选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30034105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档