2011-03-10 122 views
0

我有這樣的htaccess.htaccess的URL重寫幫助


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



RewriteRule ^home.html$ index__.php [L] 
RewriteRule ^prodotti.html$ prodotti.php [L] 
RewriteRule ^azienda.html$ azienda.php [L] 
RewriteRule ^news.html$ news.php [L] 
RewriteRule ^outlet.html$ outlet.php [L] 
RewriteRule ^contatti.html$ contatti.php [L] 

RewriteRule ^news-(.*).html$ news.php?id=$1 [L] 

RewriteRule ^arr.html$ prodotti-cat.php?cat=a [L] 
RewriteRule ^sed.html$ prodotti-cat.php?cat=s [L] 
RewriteRule ^par.html$ prodotti-cat.php?cat=p [L] 
RewriteRule ^cont.html$ prodotti-cat.php?cat=c [L] 
RewriteRule ^comp.html$ prodotti-cat.php?cat=co [L] 

RewriteRule ^outlet/([a-zA-Z0-9_-]+).html$ outlet-dett.php?prd=$1 [L] 

RewriteRule ^(.*)/(.*)/$ prodotti-cat.php?cat=$1&f=$2 [L] 
RewriteRule ^(.*)/(.*).html$ prodotti-dett.php?cat=$1&prd=$2 [L] 

如果我寫在我的瀏覽器http://www.test.it/outlet/test-2.html我得到NOT FOUND ... 爲什麼??? 幫助!!!如果該文件存在

+0

什麼是你重寫的地址例子?請澄清你打算從哪些數據中獲得。 Thks – 2011-03-10 14:33:52

+1

RewriteRule^outlet /([a-zA-Z0-9 _-] +)。html $ outlet-dett.php?prd = $ 1 [L] – Ste 2011-03-10 14:35:04

回答

0

http://www.test.it/outlet/test-2.html將被轉換爲

http://www.test.it/outlet-dett.php?prd=test-2 

檢查。

任何事情後,包括字符?被稱爲查詢字符串,所以這是怎麼一回事呢:

  • 服務器負載outlet-dett.php
  • ,並將它與價值test-2命名爲prd變量。
  • 然後outlet-dett.php中的PHP腳本顯示的數據取決於prd的值。

在你重寫規則的$1稱爲恢復參照。它引用RegEx中第一個括號之間的匹配。

+0

@Ste我們在討論**非常相同的文件** 。我用結果編輯了我的答案。 – vbence 2011-03-10 14:45:23

+0

對不起,我有那個文件...但仍然沒有找到錯誤... – Ste 2011-03-10 14:46:29

+0

你可以在你的目錄或http://www.test.it/outlet-dett沒有名爲'outlet-dett.php'的文件。 php?prd = test-2'應該給你一個答案。 - 第三個解決方案是你的PHP腳本以404(未找到)回覆,因爲它在你的數據庫中沒有名爲'test-2'的產品。 – vbence 2011-03-10 14:50:21