我正在尋找mod_rewrite來屏蔽我的網站上的用戶配置文件。但是,他們的檔案由/profile.php?id=1
的格式決定。 'user'和'id'都在mySQL表'users'中。有沒有辦法重新路由URL來閱讀/user
?對不起,如果這是不好解釋!.htaccess將id通過mySQL數據庫轉換爲用戶
回答
RewriteEngine on
RewriteRule ^profile/([^/\.]+)/?$ /profile.php?user=$1 [L]
這將導致所有/ profile/username被重定向到profile.php?user = username。然後您可以檢查您的PHP:
if (isset($_GET['user'])) {
// Check if the username exists.
// SELECT ... FROM users WHERE username = ..
}
.htaccess將無法使用數據庫中的信息來執行您的要求。即使它可以你不應該這樣做:)。
但你可以做的是改變profile.php,以便能夠通過名稱讀取用戶。假設要讓profile.php能夠處理一個新的參數name =,並且在其中添加邏輯以通過id或通過名稱查看數據庫。如果你有這個,那麼實際上路由/到/profile.php?name=是微不足道的。
您還必須更改網站生成以輸出適當的網址。
另請參閱Cristian的答案以獲取更多技術細節。最後它是一樣的想法。
你不會改變這在htaccess中,或任何類型的配置/重寫規則。如果我明白你想要什麼,這將在你的應用程序PHP中完成。
/profile.php?id=1
profile.php是(重寫規則放在一邊)源PHP文件,而id是GET參數。它在執行時就像是profile.php
的參數。它們的格式爲source.php?get1=val1?get2=val2....
,您可以通過陣列訪問它們$ _GET
如果您不希望用戶看到該ID,則可以執行以下兩項操作之一。
- 按照您的建議,將其替換爲用戶。網址是「profile.php?用戶名= XXX」
然後在你的代碼,你將可能需要執行一個簡單的數據庫查詢來獲取用戶名ID。在profile.php
的代碼頂部應該大概有5行,其餘的可以保持不變注意,這需要唯一的用戶名,以防以前使用過,以及某些特殊字符可能會在URL中獲取參數時出現問題?對於大多數用戶名,唯一性是必需的,特殊字符是不允許的,所以希望這不是問題。
- 保持身份證,但使其成爲一個POST的peremeters。 URL爲'profile.php' POST參數與get類似,但對用戶不可見,因爲它們不是URL字符串的一部分。只需在
profile.php
中將$ _GET切換爲$ _POST即可。該代碼仍然會通過ID標識用戶,但他們將無法看到他們的ID。
在這兩種情況下,你需要改變任何進入links.actions導致我們正在改變descrubed URL。
編輯 - Christian's有一個很好的建議,它與上面的#1相似,但會允許更好看的網址,如profile/XXX
而不是'profile.php?username = XXX'。在profile.php
內的代碼將相同,他的更改在profile.php
是相同的
- 1. 使用MySQL將用戶ID數組轉換爲用戶名
- 2. 將ASP.NET MDF轉換爲MySQL數據庫?
- 3. 將mysql數據庫轉換爲Oracle
- 4. 將MySql數據庫轉換爲SQLite(Tricky!)
- 5. 將MySql數據庫轉換爲C#LocalDB
- 6. 將JSON轉換爲Mysql數據庫
- 7. 將SQL Server數據庫轉換爲MySQL
- 8. 通過Mysql數據庫驗證用戶
- 9. 通過ID查詢mysql數據庫
- 10. 將SQL Server數據庫轉換爲MYSQL數據庫
- 11. 使用數據將MySql數據庫轉換爲MS SQL Server 2005?
- 12. 將AWS RDS數據庫轉換爲InnoDB,數據庫「mysql」是否需要轉換?
- 13. 通過ADOdb將MySQL轉換爲DB2 PHP
- 14. 通過PHP將MySQL轉換爲XML
- 15. 將普通Postgres數據庫轉換爲空間數據庫
- 16. 將普通Postgres數據庫轉換爲PostGis數據庫
- 17. 通過PhpMyAdmin將MS SQL Server數據庫(.mdf文件)轉換爲MySQL?
- 18. 將Wordpress會話轉換爲用戶ID
- 19. 如何將MySQL數據庫轉儲轉換爲新的PG數據庫?
- 20. 將mysql數據轉換爲數組?
- 21. 將MYSQL轉換爲適用於Android的SQLITE數據庫
- 22. 使用xampp將日期格式轉換爲Mysql數據庫
- 23. 使用php將字符串轉換爲mySQL數據庫的dateTime
- 24. 轉換MySQL數據庫UTF16
- 25. 將整數轉換數據庫轉換爲使用php的json
- 26. 如何通過fucnction將數據組轉換爲數據幀
- 27. 使用.htaccess將用戶標識轉換爲用戶名?
- 28. 通過轉換數據庫來製作數據庫的副本
- 29. 將mysql數據庫轉換爲特定格式的php數組
- 30. (PHP/MySQL)將數據庫結果轉換爲數組的問題
感謝您的答覆,這幾乎是我在找什麼。我該如何做到這一點,以便如果該網頁是www.domain.com/profile?id=1將其重新路由到www.domain.com/user,該用戶的id = 1? – Sebastian 2011-01-08 17:46:12