忽略 GeoIP Htaccess Rewrite 中的 magento 管理目录

Posted

技术标签:

【中文标题】忽略 GeoIP Htaccess Rewrite 中的 magento 管理目录【英文标题】:Ignore magento admin directory in GeoIP Htaccess Rewrite 【发布时间】:2012-03-15 19:59:40 【问题描述】:

我有一个 magento 安装,它使用 htaccess mod_geoip 将人们从特定国家重定向到其他店面。它就像一个魅力(在我让它忽略javascript和皮肤文件之后),但我会让来自澳大利亚的人输入一些命令到magento的后端。

问题是他们无法访问 store/index.php/admin 的主后端(他们被重写为 austore/index.php/admin),当他们去下订单时,他们缺少一些完整的我认为是由于 url 被重写为 austore/index.php/admin 导致的订单流程的组件。想知道如果请求 uri 是 store/index.php/admin 是否有一种方法不会被重写。下面是我的 htaccess 代码:

RewriteRule ^(skin|js) - [L,NC]

RewriteCond %ENV:GEOIP_COUNTRY_CODE     ^(AQ|AU|MY|BV|BN|BN|MM|KH|CN|CX|CC|CK|GQ|FJ|PF|GU|GW|HM|HK|ID|KI|KR|KP|KR|LA|MO|MY|MH|FM|MM|NR|NC|PG|NZ|NU|NF|PG|CN|PH|PN|WS|SG|SB|KR|LK|BN|TW|TW|AU|TH|TL|TK|TO|TV|VU|VN|VN|WF)$
RewriteCond %REQUEST_URI ^/store(/.*)$ [NC]
RewriteRule ^ /austore%1 [L,R]

感谢您的帮助!

【问题讨论】:

【参考方案1】:

据此,http://www.sonassi.com/knowledge-base/magento-kb/secure-your-magento-admin/ 你可以在你想做的事情中使用相同的重写逻辑。

RewriteCond %REQUEST_URI !^/store/(index.php/)?(admin|custom_extensions_go_here)/ [NC]
RewriteCond %REQUEST_URI !^/store/downloader/ [NC]

RewriteCond %ENV:GEOIP_COUNTRY_CODE     ^(AQ|AU|MY|BV|BN|BN|MM|KH|CN|CX|CC|CK|GQ|FJ|PF|GU|GW|HM|HK|ID|KI|KR|KP|KR|LA|MO|MY|MH|FM|MM|NR|NC|PG|NZ|NU|NF|PG|CN|PH|PN|WS|SG|SB|KR|LK|BN|TW|TW|AU|TH|TL|TK|TO|TV|VU|VN|VN|WF)$
RewriteCond %REQUEST_URI ^/store(/.*)$ [NC]

RewriteRule ^ /austore%1 [L,R]

请记住,从长远来看,通过 .htaccess 执行此操作可能会导致一些奇怪的问题,因为第三方扩展具有自定义管理路由(不以 /admin 为前缀)中断。所以请注意这一点。

我提倡使用 Magento 扩展(基于 PHP),mod_geoip 存储切换器 - 这样您就可以使其仅适用于 Magento 存储的前端区域(以防止我在上面描述的潜在错误)

【讨论】:

感谢您的快速回答。但这似乎不起作用,商店的基本登录页面仍在更改为特定于区域的商店。我的商店不在根目录中而是在根目录/商店中是否重要?我们最初确实查看了一些 php 商店切换器,但我们对它们的实现并不满意。 代码是正确的,所以我只能假设您的RewriteBase 可能会导致商店位于子目录中的问题。基于 PHP 是更可靠的方法 - 假设您的 PHP 开发人员有能力。 这是我们的 RewriteBase /store/。我们将再次查看基于 php 的重定向。您是否觉得基于 php 的查找速度有任何下降? PHP 足够快。但是您的瓶颈将是 good PHP 实现应该在自定义 Magento 扩展中,因此它需要创建 Mage 实例 (Mage::run()) 才能执行您的模块要求,这将增加一点开销,可能明显(稍微)比.htaccess 慢。我意识到我可能在评论中打错了字,尝试用 NC 替换 NC,OR 并重试 - 如果您的“更简单”的当前实现运行良好,这似乎很遗憾。 无赖,似乎仍然无法正常工作。感觉真的很接近,但就是想不通。

以上是关于忽略 GeoIP Htaccess Rewrite 中的 magento 管理目录的主要内容,如果未能解决你的问题,请参考以下文章

htaccess 和 GEOIP 无限循环

使用GeoIP和.htaccess重定向流量

htaccess 条件重写规则与 mod_GeoIP

使用 .htaccess 和 GeoipLite Legacy + mod_geoip

使用 htaccess 和 GeoIP 阻止特殊地址或 URL 的国家/地区

apache_conf MaxMind GeoIP数据库.htaccess Cookie和HTTP变量