所以,我試圖在我的 .htaccess 中有一個使用 RewriteRule 重定向網站的正則運算式。
我的想法是重定向所有不是檔案的 URL,我曾經這樣做過:
RewriteRule ^([^\.] )/?$ index.php?url=$1 [L]
此^([^\.] )/?$ RegEx的問題在于,當我想要時,不會重寫以下 URL:
- /username/my.username
- /profile/another.username
- /picture/some.user/latest
它作業得非常好,但是一旦用戶開始在他們的用戶名中使用點 (.),它顯然就停止了作業。我假設所有帶有點 (.) 的 URL 都是檔案,如下所示:
- /assets/image.png
- /index.html
我正在考慮的解決方案是添加一組我知道是必須重寫的 URL 的單詞,例如包含諸如/username、/profile、/picture之類的單詞
那么...我如何以以下方式構建RegEx運算式:
- 只要不存在點 (.),它就會匹配
- 或者,如果點 (.) 存在,它應該檢查/username、/profile、/picture之類的詞是否存在于字串中。
我正在嘗試這樣的事情:
[^\.]|([\S] (\b\/(profile|username)\/) [\S])?
但顯然行不通
uj5u.com熱心網友回復:
像這樣使用更容易RewriteCond避免重寫任何檔案和目錄,但讓模式匹配任何內容:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(. ?)/?$ index.php?url=$1 [L,QSA]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/510596.html
