0

我昨天一整天都在尝试和失败。

我需要重写所有 url 以将它们作为参数传递给我的前端控制器。

但我还需要重写所有以“admin”开头的网址并将其作为参数传递给我的管理控制器......

这是我尝试过的代码。我知道它不能按原样工作,但我不知道该怎么做......

RewriteRule ^(.*)$ /index.php?uri=$1 [L]
RewriteCond $1 !^/admin
RewriteRule ^admin/(.*)$ /admin/index.php?uri=$1 [L]

如果有人可以帮助我,我将不胜感激。

4

1 回答 1

1

将您的 RewriteCond 放在 RewriteRule 之前,或者将您的管理员重写放在其他所有内容之前。

就目前而言,访问 /admin 的访问者与第一个重写规则匹配,然后就是这样。

由于其位置,您的 RewriteCond 实际上正在应用于第二个 RewriteRule。

我还将 $1 更改为 %{REQUEST_URI} 并将 QSA 添加到标志中,以便正确传递查询字符串。

RewriteCond %{REQUEST_URI} !^/admin
RewriteRule ^(.*)$ /index.php?uri=$1 [L,QSA]
RewriteRule ^admin/(.*)$ /admin/index.php?uri=$1 [L,QSA]

这应该有效。

于 2013-07-05T06:52:05.750 回答