2013-05-30 85 views
0

我希望有人能幫助我。我目前正試圖讓我的網站更加友好,並且在使用.htaccess時遇到了一些奇怪的問題。奇怪的重寫行爲

這些都在我的測試服務器上。設計師部分工作正常,沒有在設計師名稱「cquoi等」之前的「家居設計師/」。所有的好,直到我加入最後一個mage然後它都停止工作,相對鏈接不再正常工作。我刪除了RewriteRule mage designerdata.php?search=4,它全部重新開始工作。一旦我加入homeware-designer/etc所有的作品再次罰款?誰能告訴我會發生什麼事。如果沒有^foo$,某些規則也不起作用,但大多數規則在沒有^$分隔符的情況下工作,而大多數規則根本無法使用^ $字符串分隔符。在嘗試將它放到實時服務器上之前,我只需要了解發生了什麼。

Options +FollowSymLinks -Indexes 
RewriteEngine on 

RewriteBase/

RewriteRule designer-homeware index.php 

#------------------ Living --------------- 
RewriteRule living-room-hallway category.php?collection=1 

RewriteRule designer-shelves-storage contentdata.php?collection=1&type=17 

RewriteRule designer-cushions-pouffes contentdata.php?collection=1&type=1 

rewriterule designer-coat-hat-racks contentdata.php?collection=1&type=19 

rewriterule designer-lighting contentdata.php?collection=1&type=25 

rewriterule living-room-accessories contentdata.php?collection=1&type=4 

#----------------- Eating ---------------- 
RewriteRule dining-room-eating category.php?collection=2 

rewriterule designer-tableware contentdata.php?collection=2&type=5 

rewriterule designer-glassware contentdata.php?collection=2&type=6 

rewriterule dining-room-accessories contentdata.php?collection=2&type=8 

#----------------- Bathing ---------------- 
RewriteRule ^bathroom$ category.php?collection=5 

RewriteRule bathroom-accessories contentdata.php?collection=5&type=11 

#----------------- Kids ------------------- 
RewriteRule ^childrens-decor$ category.php?collection=6 

RewriteRule ^designer-childrens-decor$ contentdata.php?collection=6&type=20 

#----------------- Garden ------------------ 
RewriteRule garden category.php?collection=7 

RewriteRule garden-accessories contentdata.php?collection=7&type=21 

#----------------- Art --------------------- 
rewriterule designer-prints contentdata.php?collection=8&type=24 

#----------------- Designers -------------- 
RewriteRule homeware-designers designer.php 

RewriteRule homeware-designer/cquoi designerdata.php?search=7 

RewriteRule homeware-designer/remember designerdata.php?search=8 

RewriteRule homeware-designer/terafue designerdata.php?search=10 

RewriteRule homeware-designer/r-bernier designerdata.php?search=11 

RewriteRule homeware-designer/c-l-boym designerdata.php?search=21 

RewriteRule homeware-designer/andre-klauser designerdata.php?search=22 

RewriteRule homeware-designer/shin-azumi designerdata.php?search=23 

RewriteRule homeware-designer/alejandro-ruiz designerdata.php?search=24 

RewriteRule homeware-designer/tord-boontje designerdata.php?search=25 

RewriteRule homeware-designer/sibo-home-concept designerdata.php?search=13 

RewriteRule homeware-designer/zafferano designerdata.php?search=14 

RewriteRule homeware-designer/klevering designerdata.php?search=15 

RewriteRule homeware-designer/dutch-waaren designerdata.php?search=16 

RewriteRule homeware-designer/vintage-casa designerdata.php?search=17 

RewriteRule homeware-designer/hubsch-denmark designerdata.php?search=18 

RewriteRule homeware-designer/serholt-sweden designerdata.php?search=19 

RewriteRule homeware-designer/lazis designerdata.php?search=20 

RewriteRule homeware-designer/atlantis designerdata.php?search=26 

RewriteRule homeware-designer/mage designerdata.php?search=4 

回答

0

對於這些類型的確切url規則,最好包含^$分隔符。需要^$分隔符的問題是有些規則是其他規則的子集。例如,如果您沒有分隔符,則bathroom規則會捕獲url bathroom-accessories。一般來說,如果您知道這是您想要的完整網址,最好是有分隔符。

另一個問題是這些規則都被檢查,即使他們匹配後。在大多數情況下,這不是一個問題,但像浴室這個詞,有些可能會在一個以上的規則上得到匹配。要解決這個問題,請在規則末尾加上[L],以表明它是最後一條規則(如果匹配) - 也就是說,它是否匹配,完成並退出。

通常情況下,還包括一個NC標誌,無需大小寫,不關心它是大寫還是小寫。

RewriteRule designer-homeware index.php [NC,L] 

#------------------ Living --------------- 
RewriteRule living-room-hallway category.php?collection=1 [NC,L] 

RewriteRule designer-shelves-storage contentdata.php?collection=1&type=17 [NC,L] 

etc. 

試試看看是否有幫助。我並沒有明確地看到法師規則有什麼問題,但是L和分隔符至少可以防止規則相互重疊。

+0

感謝您的幫助goodeye,非常感謝,我會在稍後嘗試您的建議。乾杯 –

+1

剛剛嘗試過關於分隔符的建議,如果我使用完整的url,那麼它的工作原理。 RewriteRule^living-room-hallway/designer-shelves-storage $ contentdata.php?collection = 1&type = 17 [NC,L] 這對我來說很有意義。我嘗試了很多組合,以至於我可能試過這個組合,但是在其他地方將它打破了 - 早上3點就可以輕鬆完成,而且您的疲憊和困惑。 –

+0

很高興這有幫助。如果確實解決了所有問題,請考慮接受並投票答覆。謝謝! – goodeye