我有一個類別頁面,它通過循環列出數據庫中的所有項目。
類別頁面中的每個項目都鏈接到與類別頁面位於同一目錄中的單個產品頁面(product.php)。產品頁是動態的,它的含量取決於$ _GET變量的值:
從主類別頁面生成該product.php頁的鏈接是:
<a href="product.php?subject=<?php echo urlencode($list_savory["product_name"]); ?>">
所得product.php網址是顯示爲:
shop/popcorn/product.php?subject=Bacon+and+Cheddar+Popcorn
添加以下代碼的.htaccess刪除查詢字符串和「+」替換爲破折號:
RewriteEngine on
RewriteBase/
RewriteCond %{QUERY_STRING} !no-redir [NC]
RewriteCond %{QUERY_STRING} (^|&)subject=([^&]+) [NC]
RewriteRule ^(.*)/product.php$ $1/%2? [NC]
RewriteRule ^([^+\s]+)(?:[+\s]+)([^+\s]+)((?:[+\s]+).*)$ $1-$2$3 [DPI,N]
RewriteRule ^([^+\s]+)(?:[+\s]+)([^+\s]+)$ $1-$2 [R=301,DPI,L]
的.htacess代碼後,生成的URL的格式
shop/popcorn/Bacon-and-Cheddar-Popcorn
的代碼的.htaccess完美的作品重新設置URL的,但我失去了訪問$ _GET變量,這樣的頁面沒有正確加載。我如何修改.htaccess代碼以便傳遞$ _GET變量?
你是...刪除獲取變量。他們不會被通過。通常重寫是在相反的方向完成的。 –
你做錯了:這就是所謂的'路由機制',應該完全通過'MVC/MVP/MVVM'模式使用PHP本身來完成。 – Yang
而且,由於您使用'mod_rewrite'來訪問變量,因此'$ _GET'將不再按您期望的方式工作。相反,您應該爲'$ _SERVER ['REQUEST_URI']' – Yang