2 回答

TA貢獻1831條經驗 獲得超4個贊
RewriteRule index.php?url=$1 [QSA, L]
我認為你的問題中有幾個明顯的拼寫錯誤(?),使這個指令完全無效......你缺少一個模式,所以這實際上不會匹配任何東西,并且 flags 參數中的錯誤空間在語法上是無效的,導致 500 內部服務器錯誤響應?!RewriteRule
該指令應寫如下:RewriteRule
RewriteRule ^([\w/-]+)$ index.php?url=$1 [QSA,L]
^([\w/-]+)$
匹配包含以下任意字符的 URL 路徑:、、、(下劃線)、(斜杠)和(連字符)。我排除了點,它自然是真實文件名的一部分。a-z
A-Z
0-9
_
/
-
您還應該確保禁用 MultiViews,以便mod_negotiation不會重寫之前的請求 - 因為您的“無擴展名”請求似乎直接映射到文件名。例如。 映射到 。將以下內容放在文件頂部:mod_rwrite
/user
/user.php
.htaccess
Options -MultiViews
但是當我被賦予我的URL斜杠時,它停止顯示CSS或其他IMG目錄。
這不是 的問題,而是通過使用靜態資源的相對客戶端 URL 引起的。當您請求URL時,瀏覽器將解析相對于(而不是文檔根 - 這可能是您所期望的)的任何相對URL。如果你有一個相對的URL,那么瀏覽器自然會解決這個問題 - 這可能不存在(并且可能會被重寫 - 但這不是問題 - 它不存在的事實是問題所在)。.htaccess
/user/anonymous
/user/anonymous
css/styles.css
/user/css/styles.css
index.php
如果您查看瀏覽器中的網絡流量(HTTP請求),它應該會為您提供有關正在發生的事情的線索。
您需要將客戶端 URL 更改為使用根相對(以斜杠開頭)或絕對(方案 + 主機名)URL 來解決此問題。

TA貢獻1893條經驗 獲得超10個贊
在 .htaccess 文件中使用以下代碼
RewriteEngine On
#main user page
RewriteRule ^user$ index.php?url=user [L]
#user detail page
RewriteRule ^user/([^/]*)$ index.php?url=$1 [L]
- 2 回答
- 0 關注
- 94 瀏覽
添加回答
舉報