使用Laravel进行子域路由

时间:2015-02-21 16:26:16

标签: php apache .htaccess laravel routing

我在设置子域路由时遇到了一些问题。我想我的机器上的htaccess或虚拟主机有一些问题。

我的路线如下:

Route::group(array('domain' => 'store.munia.dk'), function()
{
    Route::get('/', array('as' => 'store', 'uses' => 'Store\PageController@getHome'));
    Route::get('faq', array('as' => 'store.faq', 'uses' => 'Store\PageController@getFaq'));
    Route::get('documentation', array('as' => 'store.documentation', 'uses' => 'Store\PageController@getDocumentation'));
}

这在本地工作,但在我的生产机器上,只有第一条路线可用。其他路线将获得:

未找到:在此服务器上找不到请求的URL /文档。

来自Apache。

有没有人知道这里会出现什么问题?我正在使用Laravel的默认htaccess文件,我还没有对Apache设置进行任何更改。

这是我的虚拟主机conf:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

2 个答案:

答案 0 :(得分:3)

此处缺少的是虚拟主机配置中的AllowOverride选项。此选项指定是否尊重.htaccess个文件并应用其内容。这应该让它运行:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    <Directory "/var/www/html">
        AllowOverride all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

答案 1 :(得分:2)

您应该在apache2中启用 mod_rewrite 。您只需在您的网络服务器中执行此操作

即可
sudo a2enmod rewrite

之后你应该重启你的apache2

sudo service apache2 restart

这应该可以解决你的问题