Answers:
首先,请注意,.htaccess文件不需要重新启动httpd。.htaccess文件专门用于没有root权限的人-即,没有访问httpd服务器配置文件的权限,并且无法重新启动服务器。由于可以重新启动服务器,因此不需要.htaccess文件,可以直接使用主服务器配置。
其次,如果.htaccess文件被忽略,则需要检查以确保AllowOverride设置正确。有关详细信息,请参见http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride。您还需要确保将其设置在正确的范围内,即在配置的正确块中。确保你不是编辑一个块中,例如。
第三,如果要确保实际上正在读取.htaccess文件,请在其中放入垃圾。当您将浏览器指向包含该文件的目录时,.htaccess文件中的无效行,例如“ INVALID LINE HERE”,将导致500服务器错误。如果不是,则您没有正确配置AllowOverride。
"A STRING"
放入.htaccess文件,因此收到错误消息,因此我将AllowOverride All
所有内容apache2.conf
放入Debian,并且可以正常工作
AllowOverride
仅在<Directory>
指令中有效,如果放在<Location ...>
节中,则将被忽略,请参阅: httpd.apache.org/docs/2.4/mod/core.html#allowoverride
<Directory>
指令期望使用绝对路径而不是相对路径。就我而言,<Directory />
失败而<Directory /var/www/html/subdir>
工作。
启用Apache mod_rewrite模块
a2enmod rewrite
将以下代码添加到 /etc/apache2/sites-available/default
AllowOverride All
重新启动Apache
/etc/init.d/apache2 restart
如果您已经尝试了以上所有方法,并且都是正确有效的答案,并且您的htaccess文件无法正常工作或无法读取,请更改apache2.conf
文件中的指令。在Ubuntu下,路径为/etc/apache2/apache2.conf
更改<Directory>
指向htaccess文件所在的公共网页的指令。从更改AllowOverride None
为AllowOverride All
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
我遇到了同样的问题,并在Ubuntu Ask!中找到了答案和解释!论坛/ubuntu/421233/enabling-htaccess-file-to-rewrite-path-not-working
AllowOverride FileInfo
需要在第三行.htaccess
中读取和使用文件即可。All
还启用其他配置替代,例如.httpasswd
(可以通过使用Authconfig
代替单独启用All
)。
对于Ubuntu,
首先运行以下命令:
sudo a2enmod rewrite
然后,/etc/apache2/sites-available/000-default.conf
使用以下命令使用nano或vim 编辑文件:
sudo nano /etc/apache2/sites-available/000-default.conf
然后在000-default.conf
文件中,将其添加到行之后DocumentRoot /var/www/html
。如果您的html根目录是其他目录,请写下:-
<Directory "/var/www/html">
AllowOverride All
</Directory>
完成所有操作后,使用以下命令重新启动apache sudo service apache2 restart
只需遵循3个步骤
使用以下命令启用mode_rewrite
sudo a2enmod重写
将要求输入密码。所以输入你的密码
更新位于/ etc / apache2 / sites-available /目录中的000-default.conf或default.conf文件。您不能直接对其进行编辑。所以用下面的命令打开
须藤gedit /etc/apache2/sites-available/000-default.conf
或者sudo gedit /etc/apache2/sites-available/default.conf
你会得到
DocumentRoot / var / www / html
要么
DocumentRoot / var / www
线。在其后添加以下代码。
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
使用户的目录标记路径与文件中显示的相同。
使用以下命令重启您的apache服务器
sudo服务apache2重新启动
以我的经验,/ var / www /目录指令可防止子文件夹virtualhost指令。因此,如果您尝试了所有建议但仍然无法正常工作,并且您正在使用虚拟主机,请尝试此操作;
1-确保
AllowOverride All
在
/etc/apache2/sites-available/example.com.conf
2-检查/ var / www /目录指令/etc/apache2/apache2.conf
(可能在第164行),看起来像;
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
如果有AllowOverride None
指令,请将其更改为
AllowOverride All
或仅转义行
默认情况下,Apache禁止使用.htaccess文件应用重写规则,因此
步骤1 —启用mod_rewrite(如果未启用) 首先,我们需要激活mod_rewrite。它可用,但未通过全新Apache 2安装启用。
$ sudo a2enmod rewrite
这将激活模块或警告您该模块已启用。要使这些更改生效,请重新启动Apache。
$ sudo systemctl restart apache2
现在已完全启用mod_rewrite。在下一步中,我们将设置一个.htaccess文件,该文件将用于定义重定向的重写规则。
步骤2 —设置.htaccess 使用nano或您喜欢的文本编辑器打开默认的Apache配置文件。
$ sudo nano /etc/apache2/sites-available/000-default.conf
在该文件中,您会发现从第一行开始的一个块。在该块内,添加以下新块,以便您的配置文件如下所示。确保所有块都正确缩进。
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
. . .
</VirtualHost>
保存并关闭文件。要使这些更改生效,请重新启动Apache。
$ sudo systemctl restart apache2
做完了 您的.htacess应该可以工作。 该链接实际上可以帮助某人 https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04
$ sudo httpd -k restart
有用的重新启动命令是(Red Hat 4.4.7-23)
在.htaccess上使用RewriteBase / {您的文件夹} /
400 Bad Request
错误映射到/var/www/html/404.php
吗?