修改 RewriteRule 以改变参数结果

修改 RewriteRule 以改变参数结果

这是我的 Apache 2 目录配置:

<Directory /var/www/html/website/>
        Options +SymLinksIfOwnerMatch
        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^([^/]+)/([^/]+)/?$ index.php?operator=$1&url=$2 [L,QSA]
        RewriteRule ^([^/]+)/?$ index.php?operator=$1 [L,QSA]
</Directory>

如果我输入

example.com/website/a/b

然后我看到:?operator=a&url=b。这很好,也是我所期望的。

如果我输入

example.com/website/a/

然后我看到:?operator=a&url=。这也很好,也是意料之中的。


我的问题是

example.com/website/。

我看到的是?operator=index.php&url=。我期望看到两个参数都为空,但运算符却填充了“index.php”。

我怎样才能改变我的“重写规则”,以便当网站后面没有目录时,参数都为空,如我的示例所示?

答案1

假设您希望重写的 URL 看起来像这样/website/index.php?...,我想这就是您想要的:

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^/website/([^/]+)/([^/]+)/?$ /website/index.php?operator=$1&url=$2 [L,QSA]
    RewriteRule ^/website/([^/]+)/?$ /website/index.php?operator=$1 [L,QSA]

相关内容