正确的重写为.net文件的重写path为silex?

我刚刚开始尝试使用silex 。 我正在跟随文档,并混淆与.htaccesspath的方式。 一些背景:

  • 我使用WAMP为我的开发networking服务器,启用mod_rewrite
  • 我将Silex的“slim”副本解压缩并复制到c:\ wamp \ www \ silex \
  • 我在c:\ wamp \ www \ silex \ web \ index.php中有示例hello world路由
  • 我有一个生活在silex目录中的.htaccess文件

.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 ,我会得到一个可用的“Hello world”页面,这非常棒。

…但是如果我去localhost / silex / hello / world ,我得到了这个错误:

找不到“GET / silex / hello / world”路由

这个错误对我来说是有意义的……但这是否意味着网站的所有url都必须包含“web /”? 对于这个应用程序,这是正常的吗?

一些问题浮现在脑海中:

  • .htaccess文件应位于哪个目录中silex/或者是silex/web/ ? 在任何一个地方都有可能碰到什么问题?
  • RewriteBase应该转到/silex还是/silex/web ? (文档依稀地说“/ path / to / app”;对我来说意味着/ silex)

/silex/.htaccess试试这个:

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

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

每个应用程序应该有一个VHOST,例如,将文档根设置为c:\wamp\www\silex\web 。 然后使用Silex站点的.htaccess示例,并将其放到c:\wamp\www\silex\web\.htaccess

如果您没有DNS服务器,请将您的本地主机文件用作DNS:

注意:

确保你的apache mod_rewrite已经启用。

1:添加到您的主机文件:

 linux /etc/hosts windows c:\Windows\System32\drivers\etc\hosts 127.0.0.1 silex.local 

2:创建一个新的虚拟主机(我使用的是Apache):

 linux ( Centos ) /etc/httpd/conf/httpd.conf <VirtualHost *:80> DocumentRoot /var/www/html/silex/ serverName silex.local </VirtualHost> windows ( WAMP ) c:\wamp\bin\apache\Apache2.6\conf\httpd.conf <VirtualHost *:80> DocumentRoot C:/wamp/www/silex/ serverName silex.local </VirtualHost> 

3:重启apache

4:在你的silex根目录下创建.htaccess文件:

 <Ifmodulee mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteRule ^(.*)$ web/index.php [QSA,L] </Ifmodulee>