簡體   English   中英

.htaccess mod_rewrite-保留的文件夾名稱

[英].htaccess mod_rewrite - reserved folder names

我正在使用mod_rewrite將網址重寫為用戶個人資料,如下所示:domain.com/users/JohnSmith。

我當時在想,跳過users文件夾並簡單地將其命名為:domain.com/JohnSmith可能更整潔。

我的問題:如何執行此操作並保留系統和站點文件夾? 如果我尋找domain.com/browsersupport,則profile.php頁面將檢查名稱並在數據庫中尋找它,並且由於沒有用戶使用該名稱,因此不會顯示任何頁面。

我知道可以用PHP代碼中的某些if語句解決此問題。 另外,文件夾名稱需要保留,以便用戶無法注冊這些名稱。 但是要查找個人資料-有沒有更整潔的方法? 也許排除.htaccess文件中的系統文件夾,以便profile.php不會尋找該用戶?

這就是這兩個條件起作用的地方:

  # if the request does NOT map to a file
  RewriteCOnd %{REQUEST_FILENAME} !-f
  # and the request does NOT map to a directory
  RewriteCOnd %{REQUEST_FILENAME} !-d
  # only THEN use this rewriterule
  RewriteRulle ....etc...

如果你同時擁有“動態”頁面和動態用戶,重寫規則應以檢查由該名稱的頁面是否存在一個過程結束,且僅當它不,為用戶服務頁面。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule #insert user rewrite rule here

僅在不存在具有該給定名稱的文件夾或文件的情況下,這才適用重寫規則(您的問題似乎暗示那樣, browsersupport等確實存在於文檔根目錄中)。

是的,您必須努力讓用戶知道他們無法注冊某些特定名稱。 如果這樣做,他們將無法通過該路由訪問其用戶名。

我已經做到了,但是我有一個自我強加的規則,該規則可能不適合所有人,但對我有用:用戶名至少必須為5個字符,控制器為4個或更少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM