1
這裏就是我想要實現:的.htaccess重定向和美化查詢字符串
瀏覽器請求:example.com/webApp/controller/action/?param1=param1value
- 凡靜態的(保持不變)的URL的一部分是
webApp/
- URL的動態部分爲
controller/action/?param1=param1value
。通常它由REQUEST_URI
的(路徑包含不同部分的量)和QUERY_STRING
,並且它可以是任何東西,例如:site/index/?page=2
books/index/?page=2&sort=name
users/list
foo/bar
user/profile/posts/?page=2
- 上面列出的URL應該像這樣的.htaccess後(什麼服務器接收):
index.php?path=site/index/page/2
index.php?path=books/index/page/2/sort/name
index.php?path=users/list
index.php?path=foo/bar
index.php?path=user/profile/posts/page/2
- 當用戶看到網址不包含
index.php
部分在他們的瀏覽器中:site/index/page/2
books/index/page/2/sort/name
users/list
foo/bar
user/profile/posts/page/2
基本上我想要更換所有?
和清潔URL的QUERY_STRING
部分字符與/
並將其附加到REQUEST_URI
動態。
我一直在做這個主題的很多搜索。不幸的是,最接近的匹配是硬編碼QUERY_STRING
變成路徑的例子。相反,我想動態地將所有QUERY_STRING
部件(如果有的話)變成路徑。
我現在的.htaccess文件內容如下:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.png|\.jpg|\.gif|\.jpeg|\.bmp|\.css|\.js)$
RewriteRule ^([^?]*)$ index.php?path=$1 [NC,L,QSA]
唯一缺少的部分清潔QUERY_STRING
,如上所述。此外,如果請求URI是上述代碼(擴展名列表)中列出的文件,則不會通過index.php
進行處理。