.htaccess 针对不同条件的一个位置的三个重写规则

.htaccess 针对不同条件的一个位置的三个重写规则,.htaccess,.htaccess,我想重定向的URL开始与同一个词的帐户上的参数。只要看看我的代码 RewriteEngine On RewriteRule ^products/([^/]+) /$1.php RewriteEngine On RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) /$1.php?ref=$3 RewriteEngine On RewriteRule ^products/([^/]+)/([^/]+)/([^/]+)/([^/]+) /$1.php?refsu

我想重定向的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


我试过使用代码&它不起作用。这里面有什么瑕疵吗?有人能帮忙吗?

我认为问题是所有路线都与第一条路线匹配,所以它们都会停在那里。您可以将它们反向排列,因此它们必须首先匹配最显式的路由:

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

首先,您只需要一个
RewriteEngine On
命令。一旦打开,它就被onOkay接受了,你能分享一个解决方案吗?完美的,愚蠢的错误。完成,非常感谢您的快速响应:)