2015-02-23 66 views
1

example.comDocumentRoot/var/www/html中。如何设置Apache以运行基于子路径的Laravel?

Laravel安装在/var/www/example/public,我可以用它访问http://example.com/dashboard但是当我试图访问像其他途径为http://example.com/dashboard/login,并抛出404 Not Found错误出现问题。并说The requested URL /var/www/example/public/index.php was not found on this server.任何人都可以请指导我?

公用目录中的.htaccess文件未被改动。

这里是000-default.conf

ServerName example.com 
UseCanonicalName Off 
<Directory /var/www/html/> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
</Directory> 
<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/html 

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

    Alias /dashboard /var/www/example/public 
    <Directory /var/www/example/public> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     allow from all 
    </Directory> 
</VirtualHost> 
#dynamic subdomain provisioning 
<VirtualHost *:80> 
    DocumentRoot /var/www/example/public 
    ServerName user.example.com 
    ServerAlias *.example.com 
    <Directory /var/www/example/public> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     allow from all 
    </Directory> 
</VirtualHost> 

回答

0

我可以解决使用中000-default.conf文件中的以下内容:

<Directory /var/www/example/public> 
    DirectoryIndex index.php 
    AcceptPathInfo on 
    AllowOverride All 
    Options None 
    Order allow,deny 
    Allow from all 
</Directory> 

,不得不改变下列方式laravel的.htaccess:

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

    RewriteEngine On 
    RewriteBase /dashboard 

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

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