.htaccess设置:Laravel页面重定向无效

时间:2017-08-25 11:59:51

标签: php apache laravel web laravel-5

这是我遇到问题的My Laravel-5.4代码。我创建了测试laravel项目,有两页 home & 关于我们并使用Apache v-host(www.test.com)来映射文件路径   当我点击 www.test.com 时,它会正确加载到索引页面,但当我尝试点击 www.test.com/about 它显示404错误。但是,当我点击这样的网址 www.test.com/index.php/about 页面正确加载 我不知道它的问题出在我的代码或Apache配置或任何其他

控制器:

// Home Page
Route::get('/','pagesController@index');
// About Us Page
Route::get('/about','pagesController@about');  

路线:

   ServerAdmin webmaster@localhost
   ServerName test.com
   ServerAlias www.test.com
   DocumentRoot /var/www/html/test/public/

Apache conf:

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

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

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

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

的.htaccess

new Vue({
    framework7: {
        root: '#app',
        routes: Routes,
        pushState: true,
        cache: false,
    },
    // ...

2 个答案:

答案 0 :(得分:3)

你可能有一个未启用mod_rewrite的问题。

尝试使用a2enmod rewrite启用它,然后重新启动apache /etc/init.d/apache2 restart

看看answer

如果它不起作用。
这可能来自Apache conf:etc/apache2/httpd.conf
这个article会比我更好地解释它。

您可能需要修改:

<Directory "/var/www/html">
    ...
    AllowOverride None
    ...
</Directory>

<Directory "/var/www/html">
    ...
    AllowOverride All
    ...
</Directory>

然后重新启动apache /etc/init.d/apache2 restart

如果仍然无法正常工作,请尝试在Laravel的项目中执行chmod 0755

答案 1 :(得分:1)

你是否在apache上安装并启用了mod_rewrite? 要使用mod_rewrite,您可以在终端中键入以下命令:

a2enmod rewrite

之后重启apache2
/etc/init.d/apache2 restart

service apache2 restart

这是我.htaccess目录中的public/

<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]

另外,编辑/etc/apache2/sites-enabled/000-default

<Directory /var/www/>
   Options Indexes FollowSymLinks MultiViews
   AllowOverride All
   Order allow,deny
   allow from all
</Directory>