Php

漂亮的 URL 伺服器端配置?

  • March 21, 2017

我已將網站轉移到我們的新 VPS。它在舊伺服器上執行良好。我想我知道是什麼導致了問題,但不知道在哪裡解決它。

我已經閱讀了很多關於漂亮 URL 的文章,似乎其中大多數都在使用 mod_rewrite 解決方案。查看我的.htaccess文件,它不是那樣設置的。它甚至可能根本不是漂亮的 URL,而是完全稱為其他東西。

我們的 VPS 正在執行 WHM/Cpanel

伺服器版本:

Apache / 2.4.25 (cPanel) OpenSSL / 1.0.1e-fips mod_bwlimited / 1.4

Apache 2.4、PHP 5.5、PHP 5.6 和 PHP 7.0

CENTOS 7.3 x86_64 virtuozzo – 伺服器 WHM 62.0 (build 16)

我遇到了 URL 和.htaccess.

以下是目前.htaccess文件的內容:

Options -All SymLinksIfOwnerMatch MultiViews
#AllowOverride None
Order allow,deny
Allow from all
DirectoryIndex index

當我訪問該網站時,我得到:

內部伺服器錯誤

伺服器遇到內部錯誤或配置錯誤,無法完成您的請求。請聯繫網站管理員的伺服器管理員,告知他們此錯誤發生的時間,以及您在此錯誤之前執行的操作。伺服器錯誤日誌中可能提供有關此錯誤的更多資訊。此外,在嘗試使用 ErrorDocument 處理請求時遇到 500 Internal Server Error 錯誤。*

當我刪除.htaccess文件中的所有內容時,網站就會出現,但是當我點擊一個連結時,它說它沒有找到。(在程式碼中它不使用.php副檔名,所以它找不到頁面。)

它在舊伺服器上的工作方式.php是不使用擴展。所以取而代之的http://www.example.com/make01.phphttp://www.example.com/make01.

因此,我認為我必須在配置中添加一些內容,以使其工作方式與舊 VPS 上的工作方式相同。我可以訪問兩個 VPS 並查看了PHP.ini文件,但不完全確定我在尋找什麼。

如果你能指出我正確的方向,那就太棒了。

如果您需要更多資訊,請告訴我。這是我第一次發帖。順便說一句,很棒的社區!

Options -All SymLinksIfOwnerMatch MultiViews

刪除-All參數:

Options SymLinksIfOwnerMatch MultiViews

Apache 2.4 的 Apache 文件中所述:

將帶有 + 或 - 的選項與那些沒有的混合是無效的語法,並且將在伺服器啟動期間被帶有中止的語法檢查拒絕。

這似乎就是這裡發生的事情。該-All參數是不必要的,因為您明確設置了SymLinksIfOwnerMatchMultiViews。在 Apache 2.2(我假設的舊伺服器)上,這只會導致“意外結果”並且沒有錯誤。

因此,我認為我必須在配置中添加一些內容,以使其工作方式與舊 VPS 上的工作方式相同。

看起來你正在利用MultiViews,所以你應該很高興。啟用( mod_negotiationMultiViews的一部分)後,請求http://www.example.com/make01將導致伺服器搜尋與請求的**基本名稱和所需的 mime 類型匹配的適當文件,並將其提供給客戶端。例如。/make01結果/make01.php被送達。

請注意,如果您後來決定使用 mod_rewrite 來執行此 URL 重寫,那麼您可能需要禁用它,MultiViews因為它可能會發生衝突(一個常見的錯誤原因)。

它甚至可能根本不是漂亮的 URL,而是完全稱為其他東西。

不管它是如何實現的,它仍然是一種“漂亮的 URL”。它只是使 URL 對使用者更友好(或“漂亮”)。

引用自:https://serverfault.com/questions/839766