我试图让 htaccess 重写在 apache2 ubuntu 17.04 上工作,但它不会工作。我要做的是使用 localhost/anyroute 访问路由,但访问它的唯一方法是 localhost/PROJECTNAME/public/anyroute。 localhost/ANYROUTE 在 Windows 上工作,但 apache 将在 ubuntu 上返回“未找到请求的 url”,我不知道为什么.. 这是我的 confs 文件
.htaccess
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
我的虚拟主机
<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 会工作。我几乎尝试了一切:/
最佳答案
启用 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 行找到该 block 。在该 block 中,添加以下 block :
/etc/apache2/sites-available/default
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
您的文件现在应该与以下内容匹配。确保所有 block 都正确缩进。
/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
关于php - Laravel重写不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43509974/