
我們將託管從普通伺服器更改為 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 的文件。
作為user1686 在他們的回答中指出,您的託管提供者需要設定AllowOverride
為All
才能.htaccess
工作。是的,預設的 Apache 安裝AllowOverride
並沒有設定為,All
儘管事實上幾乎 99% 的 Apache Web 伺服器和 Web 網站都需要.htaccess
設定才能運作。例如,Wordpress 和 Drupal(兩種最受歡迎的 CMS 系統)在沒有設定和運作的情況下根本無法運作.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
運作。