这是我的 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]