301重定向,但排除名称空间

时间:2010-11-13 03:08:46

标签: ruby-on-rails regex apache redirect

背景
我有一个Rails应用程序,我的主页是产品/索引。

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

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*products\ HTTP/
RewriteRule ^(.*)products /$1 [R=301,L]

这很有效。对/ products的请求重定向到root,对产品/ [id]的请求仍然按照我的意愿路由到products / id。

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

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

我想在正则表达式中的某个地方我应该能够添加如下内容:[^ admin] 但我无法得到任何工作。

感谢。

1 个答案:

答案 0 :(得分:0)

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

RewriteCond %{REQUEST_URI} !^admin

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