【问题标题】:htaccess conditional rewrite rule with mod_GeoIPhtaccess 条件重写规则与 mod_GeoIP
【发布时间】:2012-01-26 23:40:17
【问题描述】:

我正在为我的电子商务网站使用 mod_geoip,以将来自澳大利亚的客户重定向到同一服务器上的不同店面。商店位于 root/store/,我希望将它们重定向到 root/austore/

我知道了,所以基本的重写工作完美无缺,但我希望 url 结构是相同的。例如,如果有人单击 root/store/category/product/ 链接并且他们住在海外,我希望他们被重定向到 root/austore/category/product/,因为两个商店的文件结构相同。就像现在一样,如果他们点击该链接,它会将他们重定向到基本的 root/austore/。

这是现在的重写规则。

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AU$
RewriteRule ^([^/]+)$ /austore/ [L]

我正在编辑的 .htaccess 文件位于 store/ 目录中。

任何帮助将不胜感激。谢谢!

艾伦

【问题讨论】:

    标签: .htaccess php-5.3 geoip


    【解决方案1】:

    试试

    #skip processing /store/skin/ directory
    RewriteRule ^store/skin/  - [L,NC] 
    
    #if they live overseas i.e not Australia
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^AU$
    #if someone clicks on a link that is root/store/category/product/ 
    RewriteCond %{REQUEST_URI} ^/store(/.*)$ [NC] 
    #I want them to be redirected to root/austore/category/product/ 
    RewriteRule ^ /austore%1 [L,R]
    

    【讨论】:

    • 跟进我最初的问题。我有引用原始根/存储/皮肤目录的 css、图像和 javascript 路径。随着 htaccess 重写到位,它正在重写那些不存在的路径到 root/ukstore/skin 并且破坏了所有这些链接。有没有办法让 url 重写到位,但保持皮肤目录的路径不变?
    • @coloradohiker 请参阅上面的编辑以跳过/store/skin/directory
    • 还有一个问题。我们的结帐页面是 https 并且在其中,它仍在重写皮肤和 js 页面的安全 url。有没有办法在https中也忽略它?再次感谢您的帮助。
    • 关于上述规则的有趣问题出现了。我正在使用 GeoIP 来检测多个国家/地区,然后将它们发送到 austore。如果有人从新西兰访问,他们会被重定向到 austore,没有问题,图片、js、css 都在那里。这些文件的链接被忽略,所以它仍然读取 store/skin 如果有人从澳大利亚访问,那么所有这些链接都会被破坏并重写到 austore/skin/。对这个问题有什么想法吗?此外,所有 https 重写到 austore/skin 仍然存在问题。谢谢!
    • @coloradohiker 我需要有关这两个问题的更多详细信息,例如在 HTTPS 下重写的 URL 示例以及您希望它的行为方式。与austore /皮肤问题相同。它们都可能很容易解决。还建议您创建一个新的帖子,其中包含详细信息,因为它比通过 cmets 更容易,并且会引起 SO 上每个人的关注。
    猜你喜欢
    • 2012-02-25
    • 2011-10-02
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多