不要使用.htaccess文件

不要使用.htaccess文件

我正在嘗試創建像 Instagram 或 Facebook 這樣的社交平台,我想在網址中向用戶顯示用戶名,例如 examplesite.com/usernamehere 。我一直在研究如何做到這一點,我了解到它是用 htaccess 重寫程式碼製成的。我有一個代碼

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ user.php?url=$1 [QSA,L]

它通常工作,但例如當我想進入 examplesite.com/login 或註冊頁面時,rewriterules 認為單字登入或註冊是用戶名,並且它永遠不會打開。資料夾必須打開,並且我伺服器上的 css、scss、js、img 等資料夾必須作為用戶名,因此如果有人將 examplesite.com/css、img 或 js 等單字寫入 url,則不應打開css、 img 或js 檔案。

對不起我的英語。謝謝大家! <3

答案1

許多不同的事情:

不要使用.htaccess文件

文件中有許多善意的程式碼範例.htaccess,然後被 /for 一次又一次地複製貨物崇拜系統管理員 那應該是閱讀實際的手冊。

從:https://httpd.apache.org/docs/2.4/howto/htaccess.html

一般來說,只有.htaccess當您無權存取主伺服器設定檔時才應該使用檔案。例如,存在一種常見的誤解,即使用者身份驗證應始終在 .htaccess 檔案中完成,並且近年來,mod_rewrite 指令的另一個誤解必須進入 .htaccess文件。這根本不是那麼回事。
……
對於 RewriteRule 指令,在.htaccess上下文中這些正規表示式必須在每次請求目錄時重新編譯,而在主伺服器配置上下文中,它們只編譯一次並快取。此外,規則本身更加複雜,因為必須解決每個目錄上下文和 mod_rewrite 帶來的限制。諮詢重寫指南 有關此主題的更多詳細資訊。

第二:

您已經提到了幾個應該從example.com/[user-alias]映射中排除的目錄名稱。

不要忘記也禁止人們在您的註冊頁面中故意選擇這些目錄(和其他)名稱作為他們的使用者別名。

最後的

RewriteCond指令用於限制將受下列約束的請求類型RewriteRule

RewriteRule您的設定目前以「簡單」英文表示,當存在與請求中的檔案名稱元件同名的現有檔案或目錄時,請勿套用以下內容。

您只需使用額外的行添加額外的條件RewriteCond,例如:

RewriteCond %{REQUEST_FILENAME} !"login"

應該排除example.com/login

相關內容