2013-05-30 179 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