这是我的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>
如果我输入http://example.com/website/a/b,我会看到:?operator=a&url=b
。这很好,是我所期待的
如果我输入http://example.com/website/a/,我会看到:?operator=a&url=
。这也没关系。
我的问题是http://example.com/website/的结果。我看到的是?operator=index.php&url=
我希望看到两个参数都为空,但运算符填充了&#39; index.php&#39;。
我如何更改我的RewriteRule,以便参数都是空的,然后在我的示例中显示网站后面没有目录?
答案 0 :(得分:0)
这是因为重写规则运行了两次,因为RewriteCond
应用于下一个立即RewriteRule
。
将规则更改为:
<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]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ index.php?operator=$1 [L,QSA]
</Directory>