首页 文章

.htaccess没有工作的apache

提问于
浏览
117

我有一个运行在Linux ubuntu上的AWS EC2服务的服务器,我已经安装了apache,php和mysql .

我在我的文档根 /var/www/html 中添加了一个 .htaccess 文件 .

我在其中输入了这段代码: ErrorDocument 404 /var/www/html/404.php 并且它仍未显示 .

我多次输入此命令: sudo service httpd restart 重启服务器但没有显示更改...

我怎么能解决这个问题......我做错了什么?

提前致谢!

10 回答

  • 36

    首先,请注意.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 .

  • 5
    • 启用Apache mod_rewrite模块

    a2enmod rewrite

    • 将以下代码添加到 /etc/apache2/sites-available/default

    AllowOverride All

    • 重启apache

    /etc/init.d/apache2 restart

  • 4

    如果您已经尝试了以上所有这些,这些都是有效且良好的答案,并且您的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上找到答案和解释!论坛https://askubuntu.com/questions/421233/enabling-htaccess-file-to-rewrite-path-not-working

  • 251

    对于 Ubuntu,
    首先,运行此命令: -

    sudo a2enmod rewrite
    

    然后,使用此命令使用nano或vim编辑文件 /etc/apache2/sites-available/000-default.conf : -

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

    然后在 000-default.conf 文件中,在 DocumentRoot /var/www/html 行之后添加 . 如果您的root html目录是其他的,那么写下: -

    <Directory "/var/www/html">
      AllowOverride All
    </Directory>
    

    完成所有操作后,使用命令 sudo service apache2 restart 重启apache

  • 1

    最有可能的是,AllowOverride设置为None . 位于/ etc / apache2文件夹中的apache2.conf的Directory部分

    尝试将其设置为AllowOverride All

  • 18

    只需按照3个步骤

    • 使用以下命令启用mode_rewrite

    sudo a2enmod重写

    密码将被询问 . 所以输入你的密码

    • 更新位于 /etc/apache2/sites-available/ 目录的 000-default.confdefault.conf 文件 . 你不能直接编辑它 . 所以使用以下命令打开

    sudo 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 service apache2 restart

  • 2

    根据我的经验,/ var / www / directory指令可以防止子文件夹virtualhost指令 . 所以如果你已经尝试了所有的建议但仍然没有工作,并且你正在使用虚拟主机试试这个;

    1 - 确保 /etc/apache2/sites-available/example.com.conf 中有 AllowOverride All 指令

    2 - 检查 /etc/apache2/apache2.conf 中的/ var / www /目录指令(可能在第164行),看起来像;

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

    如果有 AllowOverride None 指令将其更改为 AllowOverride All 或只是转义行

  • 100

    默认情况下,Apache禁止使用.htaccess文件来应用重写规则

    Step 1 — Enabling mod_rewrite (if not Enabled) 首先,我们需要激活mod_rewrite . 它可用,但没有启用干净的Apache 2安装 .

    $ sudo a2enmod rewrite
    

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

    $ sudo systemctl restart apache2
    

    mod_rewrite现在已完全启用 . 在下一步中,我们将设置一个.htaccess文件,我们将用它来定义重定向的重写规则 .

    Step 2 — Setting Up .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应该有效 . This link may actually help somebody https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04

  • 0

    WampServer 打开WampServer托盘图标----> Apache ---> Apache Modules ---> rewrite_module

  • 5

    在.htaccess上使用RewriteBase / /

相关问题