【问题标题】:Replace parts of the URL with mod_rewrite用 mod_rewrite 替换部分 URL
【发布时间】:2010-09-17 09:23:26
【问题描述】:

我需要一个 mod_rewrite 规则来根据它们来自的主机名重定向 url。

情况:

我们有多个域指向同一个网络空间,我们需要限制特定主机可以看到/下载的内容。

domainname.com/images/logo.jpg 和 /www.domainname.com/images/logo.jpg 应该转换成 domainname.com/domainname_com/images/logo.jpg

所以基本上我需要一个规则/函数,将 %{HTTP_HOST} 中的点替换为 _ 并删除/替换 www 子域。

有没有办法用 mod_rewrite 做到这一点?

【问题讨论】:

    标签: apache mod-rewrite redirect url-rewriting


    【解决方案1】:

    试试这些规则:

    RewriteCond %{ENV:DOMAIN_DIR} ^$
    RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
    RewriteRule ^images/.+ - [E=DOMAIN_DIR:%2]
    
    RewriteCond %{ENV:DOMAIN_DIR} ^([^.]*)\.(.+)
    RewriteRule ^images/.+ - [E=DOMAIN_DIR:%1_%2,N]
    
    RewriteCond %{ENV:DOMAIN_DIR} ^[^.]+$
    RewriteRule ^images/.+ %{ENV:DOMAIN_DIR}/$0 [L]
    

    第一条规则将获取主机并将其存储在环境变量 DOMAIN_DIR 中,不带www.。第二条规则将一次替换一个点; N 标志允许在不增加内部递归计数器的情况下重新开始重写过程。最后,第三条规则会将请求重写到对应的目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-15
      • 1970-01-01
      • 2012-03-24
      • 1970-01-01
      相关资源
      最近更新 更多