我们从普通服务器更换为 VPS 服务器。在 VPS 服务器上操作正常,但是.htaccess
VPS 不会执行或读取该文件。
即使是简单的任务,例如重定向 301,例如代码:(Redirect 301 /url.html domain.com/urlnova.html
)。
但是当我们在本地 apache 服务器(XAMPP)上测试它时,它可以正常工作,并且在之前的托管上也是如此。
我们从头创建了文件,但它仍然不起作用。我们与 VPS 托管支持人员(在本例中是 Hostinger)进行了交谈,但他们无法提供帮助。
有什么方法可以启用吗.htaccess
?
答案1
.htaccess
Apache httpd 中的使用由选项控制AllowOverride
。虽然大多数共享主机提供商都.htaccess
为客户启用了所有功能,但实际上默认禁用在 Apache httpd 中使用库存配置。
其他Web服务器例如Nginx.htaccess
根本不支持。
答案2
首先,先确定 Apache 是否确实是在新 VPS 上运行的 Web 服务器。据您所知,服务器上正在运行 Nginx,因为许多托管服务提供商认为 Apache 和 Nginx 是类似的 Web 服务器,但事实并非如此。尤其是对于.htaccess
100% 仅 Apache 项目的文件。
作为用户1686 在他们的回答中指出,您的托管提供商需要设置AllowOverride
为All
才能.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
工作。