2013-10-23 37 views
1

我遇到了一些htacess問題。 我需要重定向幾頁,但似乎規則衝突。htaccess在向URL添加變量時出現問題

我:

RewriteRule ^doors/([^/\.]+)/([^/\.]+)/?$ products.php?c=$1&p=$2 [L] 

作爲一項規則,然後我有:

Redirect 301 /doors/door-frames-and-mouldings/hardwood-door-frames---exterior http://www.domain.co.uk/doors/door-frames-and-mouldings&sub=hardwood-door-frames 

時遇到的問題是,它被重定向到URL:http://www.domain.co.uk/doors/door-frames-and-mouldings&sub=hardwood-door-frames?c=door-frames-and-mouldings&p=hardwood-door-frames---exterior - 所以它是隻需將舊的變量追加到新的URL中即可。有什麼辦法可以阻止它嗎? 在此先感謝。

回答

0

不要混用mod_rewrite和mod_alias規則。只能通過mod_rewrite規則來完成。

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^doors/([^/.]+)/([^/.]+)/?$ products.php?c=$1&p=$2 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^doors/door-frames-and-mouldings/hardwood-door-frames---exterior http://www.domain.co.uk/doors/door-frames-and-mouldings&sub=hardwood-door-frames? [L,R=301,NC] 
+0

謝謝Anubhava。我可以在第一個RewriteRule中驗證是否應該讀取:'([^ /。] +)'而不是'([^/\。] +)? –

+0

我使用'([^ /。] +)'因爲點不需要在字符類中轉義。 '([^ /。] +)'表示匹配除'/'和'.'之外的任何內容 – anubhava