重写一个或两个参数的规则

时间:2017-07-27 09:57:23

标签: mod-rewrite url-rewriting

我有以下重写规则:

RewriteRule ^(.*)/(.*)$ /?page=$1&id=$2 [L,QSA]

但我希望id参数是可选的...我该如何编写规则?

RewriteRule ^(.*)$ /?page=$1 [L,QSA]
RewriteRule ^(.*)/(.*)$ /?page=$1&id=$2 [L,QSA]

不起作用。

1 个答案:

答案 0 :(得分:0)

从重写本身的角度来看,你自己的尝试看起来很好。你声称"没有工作"我们没有什么可以争论的,但它也没有真正帮助,因为它没有说明完全的含义。

假设一般重写 为你工作而你只得到错误的(不受欢迎的)结果我会建议稍微改变一下规则集:

$(document).ready(function() {
    function onSelect(e) {
        if ("#DeviceType" in window) {
            if (e.item) {
                var dataItem = this.dataItem(e.item);
                kendoConsole.log("event :: select (" + dataItem.text + " : " + dataItem.value + ")");
            } else {
                kendoConsole.log("event :: select");
            }
        }
    }
    debugger;
});

一般提示:您应该始终更喜欢将此类规则放在http服务器(虚拟)主机配置中,而不是使用动态配置文件(RewriteEngine on RewriteRule ^/?([^/]+)/?$ /?page=$1 [L,QSA] RewriteRule ^/?([^/]+)/([^/]+)/?$ /?page=$1&id=$2 [L,QSA] 样式文件)。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。只有在您无法控制主机配置(读取:非常便宜的托管服务提供商)或者您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)的情况下,它们才被支持作为最后一个选项。 )。