2013-10-23 42 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