我从在Linux上运行Ubuntu的AWS EC2服务的服务器和我已经安装了Apache,PHP和MySQL。
我添加了一个.htaccess
在我的文档根目录的文件/var/www/html
。
我在它进入这个代码: ErrorDocument 404 /var/www/html/404.php
和它仍然没有显示出来。
我不停地输入此命令多次: sudo service httpd restart
,重新启动服务器,但不会显示任何的改变......
我怎样才能解决这个问题?难道我做错了什么?
提前致谢!
首先,请注意重启httpd,是没有必要的.htaccess文件。 .htaccess文件是专门针对谁没有根的人 - 即不具有访问的httpd服务器的配置文件,并且无法重新启动服务器。 正如你能重新启动服务器,你并不需要.htaccess文件,并可以直接使用主服务器配置。
其次,如果.htaccess文件被忽略,你需要检查看到的AllowOverride设置正确。 见http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride了解详情。 您还需要确保它在正确的范围内设置 - 即,在配置中的右挡。 要确保你不是编辑一个块中,例如。
第三,如果你想确保.htaccess文件,其实是被读,把垃圾在里面。 无效的线路,如“无效的行HERE”,在你的.htaccess文件,将导致500服务器错误,当你在包含该文件的目录指向你的浏览器。 如果没有,那么你没有正确的AllowOverride配置。
如果你已经尝试了所有上述情况,这些都是有效和良好的答案,你的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问的答案和解释! 论坛https://askubuntu.com/questions/421233/enabling-htaccess-file-to-rewrite-path-not-working
对于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
最可能的是,设置AllowOverride设置为无。 在位于/ etc / apache2目录apache2.conf目录节
尝试将它设置为所有的AllowOverride
只要遵循三个步骤
使用下面的命令启用mode_rewrite
须藤a2enmod重写
密码将被要求。 因此,输入您的密码
更新000-default.conf或位于/ etc / apache2的/网站可用/目录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服务器
须藤服务的Apache2重启
根据我的经验,在/ var / WWW /目录指令防止子文件夹虚拟主机的指令。 所以,如果你曾经尝试所有的建议,仍然没有工作,你正在使用virtualhosts试试这个;
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
在WampServer
打开WampServer托盘图标---->阿帕奇---> Apache模块---> rewrite_module
使用RewriteBase / {文件夹} /在你的.htaccess