2017-08-22 49 views
-1

我有以下的htaccess規則:htaccess的規則參數

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^licitatii/([^/]*)/([^/]*)/?$ licitatii.php?orderBy=$1&orderByType=$2 [NC,L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^licitatii/([^/]*)/?$ licitatii.php?orderBy=$1&orderByType=asc [NC,L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^licitatii licitatii.php?orderBy=licitatii_date&orderByType=asc [NC,L,QSA] 

當我使用一個錨標記這樣

<a href="/licitatii/licitatii_date/asc">Click</a> 

沒有與查詢參數和情況網址。

編輯: 我不明白404,但我去這個網址後 '/ licitatii/licitatii-日期/ ASC /' 我得到這個 enter image description here

,而不是這個

enter image description here

因此,URL被改變,但沒有提供的輸出,並將其行爲像我訪問的頁面不存在(在htaccess的規則) 這是我修改htaccess文件:

<IfModule mod_rewrite.c> 
RewriteEngine On 
Options -Indexes 
Options -MultiViews 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 

RewriteRule ^cauta/([a-z0-9\+]+)-([a-z0-9\+]+)-([a-z0-9\+]+)-([a-z0-9\+]+)-([a-z0-9\+]+)-pag([0-9]+)$ cautaLucrare?cautaCategorie=$1&keyWord=$2&cautaDataFrom=$3&cautaDataTo=$4&location=$5&pager=$6 [QSA,L] 
#RewriteRule ^cauta/([a-z0-9\+]+)-([a-z0-9\+]+)-([a-z0-9\+]+)-pag([0-9]+)$ cautaLucrare.php?tip_ev=$1&numar_persoane=$2&numar_stele=$3&pager=$4 [QSA,L] 


RewriteRule ^adauga_anunt1 landings/landing2.php?source=adwordsLanding2 [NC,L,QSA] 


RewriteRule ^adauga_anunt cumFunctioneaza.php [NC,L,QSA] 


RewriteRule ^blog/([0-9a-z-/]+)-([0-9]+) blog.php?title=$1&idArt=$2 [NC,L,QSA] 


RewriteRule ^blog blog.php [NC,L,QSA] 


RewriteRule ^cont/detalii detalii.php [NC,L,QSA] 


RewriteRule ^cont/parola-noua parolaNoua.php [NC,L,QSA] 


RewriteRule ^cont/istoric istoric.php [NC,L,QSA] 


RewriteRule ^cont/oferte-acceptate oferteAcceptate.php [NC,L,QSA] 


RewriteRule ^login-fb loginM.php?source=fb [NC,L,QSA] 


RewriteRule ^adauga-anunt landings/landing1.php?source=adwordsLanding1 [NC,L,QSA] 


RewriteRule ^login loginM.php [NC,L,QSA] 


RewriteRule ^facebook loginFB.php [NC,L,QSA] 


RewriteRule ^cont-activat contActivat.php [NC,L,QSA] 


RewriteRule ^parola-uitata parolaUitata.php [NC,L,QSA] 


RewriteRule ^adauga-lucrare adaugaLucrare.php [NC,L,QSA] 


RewriteRule ^adauga2 adaugaLucrare2.php [NC,L,QSA] 


RewriteRule ^inregistreaza-prestator inregPrest.php [NC,L,QSA] 


RewriteRule ^inregistreaza-beneficiar inregBen.php [NC,L,QSA] 


RewriteRule ^contact contact.php [NC,L,QSA] 


RewriteRule ^termeni-si-conditii tandc.php [NC,L,QSA] 


RewriteRule ^despre-noi despre2.php [NC,L,QSA] 


RewriteRule ^cauta-lucrare cautaLucrare2.php [NC,L,QSA] 


RewriteRule ^cauta cautaLucrare2.php [NC,L,QSA] 


RewriteRule ^admin/functii admin.php [NC,L,QSA] 


RewriteRule ^admin/statistici statistici.php [NC,L,QSA] 


RewriteRule ^logout logout.php [NC,L,QSA] 


RewriteRule ^lucrari-active lucrariActive.php [NC,L,QSA] 


RewriteRule ^cont/lucrari-active2 lucrariActive2.php [NC,L,QSA] 

RewriteRule ^licitatii/([^/]+)?/([^/]+)?/$ licitatii.php?orderBy=$1&orderByType=$2 [NC,L,QSA] 

RewriteRule ^licitatii/([^/]+)?/$ licitatii.php?orderBy=$1 [NC,L,QSA] 

RewriteRule ^licitatii licitatii.php [NC,L,QSA] 


RewriteRule ^contul-meu cont.php [NC,L,QSA] 


RewriteRule ^cont2 cont2.php [NC,L,QSA] 


RewriteRule ^cont/mesaj-([0-9]+) mesaj.php?id_mesaj=$1 [NC,L,QSA] 


RewriteRule ^cont/mesaje-([0-9]+) mesaje.php?pager=$1 [NC,L,QSA] 


RewriteRule ^cont/mesaje mesaje.php [NC,L,QSA] 


RewriteRule ^cum-functioneaza cumFunctioneaza.php [NC,L,QSA] 


RewriteRule ^edit-([0-9]+) editAdd.php?idAnunt=$1 [NC,L,QSA] 


RewriteRule ^edit-licitatie-([0-9]+) editOff.php?idLic=$1 [NC,L,QSA] 


RewriteRule ^([0-9a-z-/\)\(!?]+)-([0-9]+) page2.php?anuntTitlu=$1&idAnuntToShow=$2 [NC,L,QSA] 

#RewriteCond %{REQUEST_FILENAME} !-d 
#RewriteCond %{REQUEST_FILENAME} !-f 
#RewriteRule ^([0-9a-z-/]+)-([0-9]+) cautaLucrare2.php?anuntTitlu=$1&idAnuntToShow=$2 [NC,L,QSA] 


RewriteRule ^categorii/([0-9a-z-/]+) categories.php?categoryToShow=$1 [NC,L,QSA] 

</IfModule> 

後來編輯: 經過一個小小的研究,當我訪問此網址licitatii/licitatii-date/asc它匹配這條規則:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([0-9a-z-/]+) categories.php?categoryToShow=$1 [NC,L,QSA] 

,而不是這個規則:

RewriteRule ^licitatii/([a-z-A-Z-0-9-]+)/([^/]+)/?$ licitatii.php?orderBy=$1&orderByType=$2 [NC,L,QSA] 
RewriteRule ^licitatii/([a-z-A-Z-0-9-]+)/?$ licitatii.php?orderBy=$1 [NC,L,QSA] 
RewriteRule ^licitatii/?$ licitatii.php? [NC,L,QSA] 

如何防止匹配上面規則?

編輯: 我收到了302後,我進入網址。請求如下圖所示:

enter image description here

+1

你是什麼意思什麼發生?你有404迴應嗎? – ishegg

+0

後,我點擊它重定向我的鏈接到同一頁面和URL看起來像「/ licitatii」。它不更新的查詢參數 –

+0

只是要清楚,你所得到的查詢參數,但是當您更改URL,他們不會改變? – ishegg

回答

1

有它這樣與MultiViews關閉,在第三規則使用錨和使用+量詞,而不是*

Options -MultiViews 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^licitatii/([^/]+)/([^/]+)/?$ licitatii.php?orderBy=$1&orderByType=$2 [NC,L,QSA] 

RewriteRule ^licitatii/([^/]+)/?$ licitatii.php?orderBy=$1&orderByType=asc [NC,L,QSA] 

RewriteRule ^licitatii/?$ licitatii.php?orderBy=licitatii_date&orderByType=asc [NC,L,QSA] 
+0

謝謝!我根據你的答案重寫規則並知道它到達所需的鏈接,但它沒有找到指定的文件,你能告訴我規則應該如何接受作爲查詢參數的用' - '分隔的多個單詞。我想「^ licitatii /(A-ZA-Z0-9 - ] +)/」 –

+0

對不起,該文件的一部分是不是在代碼預覽,上面是一點點,我會盡sollution,我會編輯這 –

+0

後你好很可能與此URL'licitatii \ licitatii最新\ asc'就此htaccess的規則輸入? 'RewriteCond%{REQUEST_FILENAME}!-d \t RewriteCond%{REQUEST_FILENAME}!-f \t RewriteRule ^([0-9a-z - /] +)categories.php?categoryToShow = $ 1 [NC,L,QSA]'因爲我注意到,它試圖展示一個類別與該名稱 –