在Laravel 4中无法访问没有index.php的路由

时间:2014-02-07 10:20:28

标签: php laravel laravel-routing

好的,所以我花了相当多的时间在谷歌上搜索这个建议,尽管在WAMP服务器之前在Laravel 4中设置了几个测试项目,但我不确定在这种情况下我缺少什么。希望我已经提供了我的设置所需的所有细节以及我到目前为止所尝试的内容。

WAMPserver版本2.4,位于C:/ wamp /
Apache版本2.4.4
PHP版本5.4.12
mod_rewrite启用(我可以在phpinfo()中看到它) 项目位于C:/ wamp / www / wsrp /

C:/ wamp / www / wsrp / public 中我有以下.htaccess文件:

<IfModule mod_rewrite.c>
  <IfModule mod_negotiation.c>
    Options -MultiViews
  </IfModule>

  RewriteEngine On

  # Redirect Trailing Slashes...
  RewriteRule ^(.*)/$ /$1 [L,R=301]

  # Handle Front Controller...
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^ index.php [L]
</IfModule>

在我的 C:/wamp/bin/apache/Apache2.4.4/conf/httpd.conf 文件中,我已取消注释此行:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

在我的 C:/wamp/bin/apache/Apache2.4.4/conf/extra/httpd-vhosts.conf 文件中,我有以下内容:

<VirtualHost *:80>
    DocumentRoot "C:\wamp\www"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/wamp/www/wsrp/public"
    ServerName localhost
    Options Indexes FollowSymLinks
    <Directory "C:/wamp/www/wsrp/public">
        AllowOverride All
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>
</VirtualHost>

在我的 C:/wamp/www/wsrp/app/routes.php 文件中,我有这条测试路线:

Route::get('test', function() {
    echo 'Hello world!';
});

要测试我正在尝试访问此网址:

http://localhost/wsrp/test

这不起作用,它显示了一个内部服务器错误页面。但是,如果我访问此网址:

http://localhost/wsrp/index.php/test

我看到了我的“你好世界!”#39;消息显示。

显然,我希望能够在没有URL中的index.php的情况下处理这个项目,这就是问题所在。

在我看过的所有SO问题/答案中,他们都建议添加一个我已经完成的虚拟主机,在 C:/ wamp / www / wsrp中使用正确的.htaccess文件/ public / 我已经完成了mod_rewrite已启用,我已经完成了,是的..不知道还有什么可以尝试,或者我缺少什么。非常感谢帮助和建议!

修改

忘记提及我在 C:/wamp/alias/wsrp.conf

中也有一个别名文件
Alias /wsrp "c:/wamp/www/wsrp/public"

<Directory "c:/wamp/www/wsrp/public">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Allow from all
</Directory>

2 个答案:

答案 0 :(得分:0)

首先为什么你有一个localhost v-host? WAMP服务器的根目录通常为c:/wamp/www,已由HOSTS映射到127.0.0.1或localhost。那个v-host是无关紧要的。

其次,当您的c:/wamp/www目录用于包含您的网站时,httpd.conf已经包含了所需的<Directory>详细信息,从内存中看起来像:

<Directory c:/wamp/www>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require local
</Directory>

除非要添加特定模块配置或更改任何默认值,否则无需为子目录定义任何特殊目录信息。要让你的vhost工作,你需要添加不超过:

<VirtualHost *:80>
    ServerName mylocalsite.dev
    DocumentRoot c:/wamp/www/mysite/public
</VirtualHost>

但我建议您将错误记录/访问日志记录放在其中。

答案 1 :(得分:0)

我遇到了同样的问题。我用这种方式解决了这个问题。

  1. 打开 C:\ wamp \ bin \ apache \ Apache2.4.4 \ conf / httpd.conf
  2. 然后,您可以搜索下一行 #LoadModule rewrite_module modules / mod_rewrite.so
  3. 在开头删除磅('#')符号并保存文件。
  4. 接下来,重新启动您的WampServer并进行测试。
  5. 我希望能帮到你!