2014-11-06 59 views
0

我想重定向以它所具有的参数的帐户上的同一词开始的URL。只需看一下我的代码。一个位置不同条件的三个重写规则

RewriteEngine On 
RewriteRule ^products/([^/]+) /$1.php 
RewriteEngine On 
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) /$1.php?ref=$3 
RewriteEngine On 
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+)/([^/]+) /$1.php?refsub=$4 

如果URL像/products/xyz我想这个被重定向到/xyz.php

如果URL像/products/xyz/abc/11我想这个被重定向到xyz.php?ref=11

如果URL像/products/xyz/abc/def/111我想这被重定向到xyz.php?refsub=111

我试着用代码&它不工作。这有什么缺陷?谁能帮忙?

+0

一开始,你只需要一个'RewriteEngine On'命令。一旦开启,它就在 – Joe 2014-11-06 15:34:55

+0

好的,你可以分享一个解决方案吗? – 2014-11-06 15:37:16

回答

1

我相信问题是所有的路线都与第一条路线相匹配,所以他们都会在那里停下来。您可以逆序他们,让他们有相匹配的最明确路由第一:

RewriteEngine On 
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+)/([^/]+) /$1.php?refsub=$4 
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) /$1.php?ref=$3 
RewriteRule ^products/([^/]+) /$1.php 

或者你可以只添加结束URL标记:

RewriteEngine On 
RewriteRule ^products/([^/]+)/?$ /$1.php 
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+)/?$ /$1.php?ref=$3 
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /$1.php?refsub=$4 
+0

完美的,愚蠢的错误。完成,非常感谢您的快速回复:) – 2014-11-06 15:41:53