NGINX重定向index.php UNLESS url包含/ admin /

时间:2015-01-16 14:56:37

标签: magento url redirect nginx rewrite

我正在尝试从URL中删除index.php而不破坏Magento管理面板。我们正在尝试减少SEO“重复内容”,因此如果网址包含index.php,我们正在寻求301重定向...除非它位于管理区域。

示例:

(domain)/index.php - >重定向到(域)

(domain)/index.php/category-one/ - > (域)/类别酮/

(domain)/index.php/admin/report - >不要重定向

我的工作除了/ admin / bit

if ($request_uri ~ .*.index\.php(.*)) {
    return 301 $1;  
    }

NGINX不允许使用嵌套的IF语句。

非常感谢任何帮助。谢谢

1 个答案:

答案 0 :(得分:0)

IfIsEvil,请考虑使用重写:

rewrite /index\.php(?:$|/((?!admin(?:/|$)).*)) /$1 permanent;

它将删除index.php,除非它后跟/ admin,但仅当“admin”位于url的末尾或后跟/时。正则表达式有点臃肿,但它会做正确的事情并重定向像“管理”这样的单词,并且不会在网址中引入任何额外的斜杠。