正确重写.xtaccess文件的重写路径为silex?

时间:2014-08-11 20:55:52

标签: php apache .htaccess mod-rewrite silex

我刚刚开始尝试silex。我跟随the documentation并且对于使用.htaccess路径的方式感到困惑。一些背景:

  • 我在我的开发网络服务器上使用WAMP,启用了mod_rewrite
  • 我将the "slim" copy of Silex解压缩并复制到c:\ wamp \ www \ silex \
  • 我在c:\ wamp \ www \ silex \ web \ index.php中有the example hello world route
  • 我有一个.htaccess文件,该文件位于 silex 目录中

.htaccess文件:

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

如果我去 localhost / silex / web / hello / world ,我会得到一个有效的&#34; Hello world&#34;页面,这很棒。

...但如果我去 localhost / silex / hello / world ,我会收到silex错误:

  

找不到&#34; GET / silex / hello / world&#34;

的路线

这个错误对我有意义......但这是否意味着&#34; web /&#34;必须包含在所有网站的网址中?这对于s​​ilex应用程序来说是正常的吗?

有些问题浮现在脑海中:

  • .htaccess文件应该位于哪个目录 - silex/silex/web/?在任何一个地方都有可能遇到任何问题吗?
  • RewriteBase应该转到/silex还是/silex/web? (文档模糊地说&#34; / path / to / app&#34 ;;对我来说这意味着/ silex)

2 个答案:

答案 0 :(得分:2)

/silex/.htaccess

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

答案 1 :(得分:2)

Silex示例假定web目录设置为虚拟主机的文档根目录。

每个应用程序应该有一个VHOST,例如文档根目录设为silex.local的{​​{1}}。然后使用Silex网站上的c:\wamp\www\silex\web示例并将其放入.htaccess