Ruby on rails 301重定向,但不包括命名空间

Ruby on rails 301重定向,但不包括命名空间,ruby-on-rails,regex,apache,redirect,Ruby On Rails,Regex,Apache,Redirect,背景: 我有一个Rails应用程序,我的主页是products/index 我在.htaccess文件中使用以下代码将请求从products/重定向到root RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*products\ HTTP/ RewriteRule ^(.*)products /$1 [R=301,L] 这很有效。对/products的请求正在重定向到root,而对products/[id]的请求仍然按照我的要求路由到products/id

背景
我有一个Rails应用程序,我的主页是products/index

我在.htaccess文件中使用以下代码将请求从products/重定向到root

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*products\ HTTP/
RewriteRule ^(.*)products /$1 [R=301,L]
这很有效。对/products的请求正在重定向到root,而对products/[id]的请求仍然按照我的要求路由到products/id

问题
唯一的问题是我有一个名称空间为/admin的管理部分。在管理部分,我有/个产品。
所以现在,当我的管理员用户在网站的管理部分,他点击“产品”链接时,他应该被发送到url/admin/products。但是,重写规则将他重定向到url/admin

问题
如何从上面列出的重定向代码中排除admin前缀

我想,在正则表达式中的某个地方,我应该能够添加类似:[^admin] 但我什么都做不到


谢谢。

添加另一个这样的重写条件开始:

RewriteCond%{REQUEST\u URI}^管理员


这将对以admin开头的任何请求禁用以下重写规则。

几乎就是这样。它只需要一个小小的调整:RewriteCond%{REQUEST_URI}^(.*)您的调整使大量表达式自相矛盾。此上下文中的“^”字符从行首开始匹配。您的调整现在匹配行的开头,然后匹配任意数量的随机字符。如果您的管理员位于URL的开头,请匹配开头的内容,或者直接删除“^”并匹配请求中的任何位置。换句话说,
^(.*)
完全等于零。