Apache .htaccess 无法在新 VPS 上运行

Apache .htaccess 无法在新 VPS 上运行

我们从普通服务器更换为 VPS 服务器。在 VPS 服务器上操作正常,但是.htaccessVPS 不会执行或读取该文件。

即使是简单的任务,例如重定向 301,例如代码:(Redirect 301 /url.html domain.com/urlnova.html)。

但是当我们在本地 apache 服务器(XAMPP)上测试它时,它可以正常工作,并且在之前的托管上也是如此。

我们从头创建了文件,但它仍然不起作用。我们与 VPS 托管支持人员(在本例中是 Hostinger)进行了交谈,但他们无法提供帮助。

有什么方法可以启用吗.htaccess

答案1

.htaccessApache httpd 中的使用由选项控制AllowOverride。虽然大多数共享主机提供商都.htaccess为客户启用了所有功能,但实际上默认禁用在 Apache httpd 中使用库存配置。

其他Web服务器例如Nginx.htaccess根本不支持。

答案2

首先,先确定 Apache 是否确实是在新 VPS 上运行的 Web 服务器。据您所知,服务器上正在运行 Nginx,因为许多托管服务提供商认为 Apache 和 Nginx 是类似的 Web 服务器,但事实并非如此。尤其是对于.htaccess100% 仅 Apache 项目的文件。

作为用户1686 在他们的回答中指出,您的托管提供商需要设置AllowOverrideAll才能.htaccess工作。是的,Apache 默认安装AllowOverride并未设置为,All尽管事实上几乎 99% 的 Apache Web 服务器和网站都需要设置为才能工作。例如,Wordpress 和 Drupal(目前最流行的两个 CMS 系统)如果不设置并运行,.htaccess将根本无法工作。.htaccess

例如,可以在默认文件底部设置一个指令,/etc/httpd/conf/httpd.conf以允许.htaccess在任何目录中工作/var/www/html

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

它也可以在本地 Apache 配置文件中的路径中进行设置,如下所示:

/etc/httpd/conf.d/zzzz_local.conf

我以前总是把这样的内容附加在底部/etc/httpd/conf/httpd.conf,但现在个人认为在加载的配置文件中设置更干净主要 内容httpd.conf已经 加载/etc/httpd/conf.d/.

但一般来说,AllowOverride All需要进行设置才能.htaccess工作。

相关内容