.htaccess条件,可在内部多种条件下工作

.htaccess条件,可在内部多种条件下工作,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我想尝试一些类似于if in.htaccess的方法: 我想将每个?sp=稍微重新命名为不同的?p=NNN(一些数字) 我有100个?sp=页面。 我不想在每次加载页面时都使用100条规则。 如果这是另一种解决方法,我很高兴知道 if(RewriteCond %{HTTP_HOST ^?sp=}{ RewriteRule ^?sp=bar ?p=5 RewriteRule ^?sp=foo ?p=9 RewriteRule ^?sp=tin ?p=15 } 在?sp=和

我想尝试一些类似于if in.htaccess的方法:

我想将每个
?sp=稍微
重新命名为不同的
?p=NNN
(一些数字) 我有100个
?sp=
页面。 我不想在每次加载页面时都使用100条规则。 如果这是另一种解决方法,我很高兴知道

if(RewriteCond %{HTTP_HOST ^?sp=}{
    RewriteRule ^?sp=bar ?p=5
    RewriteRule ^?sp=foo ?p=9
    RewriteRule ^?sp=tin ?p=15
}

在?sp=和?p之间没有逻辑=


更新:我没有访问服务器配置的权限。

这可以通过RewriteMap指令来完成(如果您有权访问服务器配置,如注释中所述。不知道他们为什么认为需要限制…)。例如:

RewriteMap sp_to_s txt:/path/to/map.txt
RewriteRule ^?sp=(.*) ?p=${sp_to_s:$1|0}
(如果映射中没有一对匹配,
0
是默认值)

下面是一个示例map.txt:

bar 5
foo 9
tin 15

有更多的方法可以使用地图功能;有关详细信息,请参阅mod_rewrite文档。

否,不幸的是,没有其他方法可以实现此目的;)你可以调整你的URL逻辑来实现这一点,例如,将数字附加到字符串中。这在?sp=和?p=之间没有逻辑。我的意思是,当你调用例如index.php?sp=foo_001时,你可以在htaccess to index.php?sp=foo&p=001中重写它,“我不想在每次加载页面时都处理100条规则。”–那么您最好将每个
?sp=…
重定向到同一个脚本,然后让该脚本在数组或其他东西中查找对应sp值的数字,然后从那里重定向到正确的
?p=number
。@CBroe这正是我想做的原因。问题是:如果不访问服务器配置,我怎么做?虽然需要访问服务器配置,但不能在内部使用。htaccessI无权访问服务器配置。这是另一种方法?@yonilobo除了有许多规则之外,我不知道还有其他方法:
RewriteRule^?sp=bar?p=5
RewriteRule^?sp=foo?p=9
等等。如果你需要为每一个条件。。。运气不好,你只需要大量复制和粘贴。对不起。:)我可以使用:RewriteRule(可以工作于?sp=*)-[S=50],然后写下所有的规则