Laravel重写不起作用

时间:2017-04-20 04:01:27

标签: php apache .htaccess ubuntu

我正在尝试在apache2 ubuntu 17.04上进行htaccess重写工作但是它不起作用。我想要做的是使用localhost / anyroute访问路由,但访问它的唯一方法是localhost / PROJECTNAME / public / anyroute。 localhost / ANYROUTE适用于Windows,但是apache将在ubuntu上返回“找不到请求的网址”,我不知道为什么..这里是我的confs文件 .htaccess

Options +FollowSymLinks
RewriteEngine On

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

我的vhost

<VirtualHost *:80>
DocumentRoot /var/www/html/test/public/
<Directory /var/www/html/test/public>
Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>
ErrorLog /var/log/apache2/test-error_log
CustomLog /var/log/apache2/test-access_log common
</VirtualHost>

apache2.conf

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

所以底线是localhost / anyroute不起作用,但localhost / project / public / anyroute将起作用。我几乎尝试了一切:/

1 个答案:

答案 0 :(得分:2)

启用mod_rewrite

现在,我们需要激活mod_rewrite。

sudo a2enmod rewrite

这将激活模块或提醒您模块已经生效。要使这些更改生效,请重新启动Apache。

sudo service apache2 restart

在我们开始之前,我们需要设置并确保更多设置。

首先,允许更改.htaccess文件。使用nano或您喜欢的文本编辑器打开默认的Apache配置文件。

sudo nano /etc/apache2/sites-enabled/000-default.conf

在该文件中,您将在第1行找到该块。在该块的内部,添加以下块:

/etc/apache2/sites-available/default
<Directory /var/www/html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
</Directory>

您的文件现在应符合以下条件。确保所有块都正确缩进。

/etc/apache2/sites-available/default
<VirtualHost *:80>
    <Directory /var/www/html>

        . . .

    </Directory>

    . . .
</VirtualHost>

要使这些更改生效,请重新启动Apache。

sudo service apache2 restart

现在,创建.htaccess文件。

详细信息请参阅以下参考链接:

https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_rewrite-for-apache-on-ubuntu-14-04