Laravel 4虚拟主机和mod重写设置

Zub*_*zob 9 php apache .htaccess mod-rewrite laravel

我已经尝试了几个小时来安装Laravel 4并使虚拟主机和路由工作,但到目前为止我一直不走运.我提到我在Windows 7机器和WAMP上这样做.

我将描述我已经做过的事情:

我启用了rewrite_module.

使用以下内容更新了httpd-vhosts.conf:

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www/laravel/public"
    ServerName laravel.dev
    ServerAlias www.laravel.dev
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

接下来,我设置了etc/hosts:

127.0.0.1       localhost
127.0.0.1       laravel.dev
Run Code Online (Sandbox Code Playgroud)

此外,以下行无论是在取消注释是wamp/../conf/httpd.conf在wamp/.../conf/original/httpd.conf:

LoadModule vhost_alias_module modules/mod_vhost_alias.so

Include conf/extra/httpd-vhosts.conf
Run Code Online (Sandbox Code Playgroud)

我的内容.htaccess如下:

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On

    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

然而,当我访问http://laravel.dev时,我收到内部服务器错误 - 服务器遇到内部错误或配置错误,无法完成您的请求..

如果我.htaccess从公共文件夹中删除该文件,那么我将看到Laravel"你已经到达"的消息.如果那时,我创建一个这样的路线(在app\routes.php中):

Route::get('/newroute', function()
{
    return View::make('hello');
});
Run Code Online (Sandbox Code Playgroud)

然后转到http://laravel.dev/newroute我最终会找到404 Not Found - 在此服务器上找不到请求的URL/newroute.

我很困惑,不知道我怎么能超越这个.我提到(虽然我认为很清楚)我composer install在克隆项目模板后运行了一个安装依赖项.

Jon*_*Lin 9

如果您发布的htaccess文件位于您的/public/文件夹中,那么这就是您收到500内部服务器错误的原因.该htaccess文件是为该文件夹所在的/public/文件夹而生成的.但由于您的公用文件夹是文档根目录,因此您不需要它.

该htaccess文件中的/public/文件夹应该是这样的:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Run Code Online (Sandbox Code Playgroud)

(对于WAMP).


hay*_*rse 5

尝试通过将VirtualHost更改为:在目录上启用AllowOverride All:

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www/laravel/public"
    ServerName laravel.dev
    ServerAlias www.laravel.dev
    <Directory "c:/wamp/www/laravel/public">
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)