我正在尝试在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将起作用。我几乎尝试了一切:/
答案 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文件。
详细信息请参阅以下参考链接: