2013-09-26 114 views
1

我一直在線閱讀幾個教程,並在這裏搜索了其他幾個問題,但我似乎無法掌握使用HTACCESS文件重寫動態URLS的情況。用HTACCESS重寫動態URL

我有這樣的URL:

products.php?cat=2 
products.php?cat=3 
products.php?cat=4 

我想他們只是說產品/ 2例如

equipment.php?cat=2&subCat=1 
equipment.php?cat=2&subCat=2 
equipment.php?cat=2&subCat=3 

我想這說的設備/ 2/1爲例

product.php?id=3010-Z89CH24 

我想這些說產品/ 3010-Z89CH24例如

但到目前爲止,只是想改變products.php網頁我有這樣的:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^*******\.com [NC] 
RewriteRule (.*) http://www.*******.com/$1 [L,R=301] 

Options +FollowSymLinks 

RewriteRule ^products/'^([1-9][0-9]{0,2})'$ http://www.*******.com/products.php?cat=/$2 [L] 
# REMOVE PHP EXTENSIONS 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ $1.php [L,QSA] 

事情是我不認爲端部「/ $ 2」是正確的,即時通訊不確定的其餘部分太:/

無論哪種方式,它的工作不適合我,我堅持並努力理解它:(

有人可以幫助我嗎?

+0

仍然需要這個傢伙的幫助:( – Kevlar

回答

1

啓用通過httpd.confmod_rewrite.htaccess,然後把這個代碼在你DOCUMENT_ROOT/.htaccess文件:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

## If the request is for a valid directory 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
## If the request is for a valid file 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
## If the request is for a valid link 
RewriteCond %{REQUEST_FILENAME} -l 
## don't do anything 
RewriteRule^- [L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^.]+)\.php\?cat=([^\s&]+)&subcat=([^\s&]+)\s [NC] 
RewriteRule^/%1/%2/%3? [R=301,L] 

RewriteRule ^([^/.]+)/([^/]+)/([^/]+)/?$ /$1.php?cat=$2&subcat=$3 [L,QSA] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^.]+)\.php\?cat=([^\s&]+)\s [NC] 
RewriteRule^/%1/%2? [R=301,L] 

RewriteRule ^([^/.]+)/([^/]+)/?$ /$1.php?cat=$2 [L,QSA] 
+0

這有比我之前得到的更多,但由於某種原因頁面加載w沒有任何造型和很多內容缺失?任何想法爲什麼? – Kevlar

+0

當人們切換到漂亮的網址時,你遇到了最常見的問題:) FIx也很簡單,只要確保爲js,css,圖像等使用絕對路徑。路徑需要以'/'或'http: //' – anubhava

+0

thankyou :)可以工作......但我必須在整個站點中使用絕對路徑?這將需要大量的工作,該網站是相當大的 – Kevlar

0

您的問題是你的正則表達式是錯誤的 - 我建議你檢查出某種基本的正則表達式教程,注意提及捕獲小組。

不檢查 - 並假設您的基於數字-的限制是正確的 - 我猜你想有一個規則是這樣的:

RewriteRule ^/products/([1-9][0-9]{0,2})$ /products.php?cat=$1 [L] 

如果您需要保留現有的查詢串,你會可能也想要QSA旗幟。

+0

嗨,我無法得到任何與此。嘗試不同的正則表達式,但它只是給我內部服務器錯誤 – Kevlar