【问题标题】:mod_rewrite with subdomain and url pattern带有子域和 url 模式的 mod_rewrite
【发布时间】:2010-02-09 13:35:43
【问题描述】:

我想通过 mod_rewrite 将子域用作 get 变量并使用一些参数:

例如/page/language/site/counter -> index.php?o=operator&lg=language&s=arg1&c=arg2

如何用 mod_rewrite 做到这一点?

RewriteEngine On  

RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST} ^([a-zA-Z]{3,6})\.example\.com  
RewriteRule ^index/([a-z]{2})/([0-9]{1,2})/([0-9]{1,2})$  http://www.example.com/index.php?o=%1&lg=%2&site=%3&counter=%4 [NC,L] # for index.php
RewriteRule ^export/([a-z]{2})/([0-9]{1,2})/([0-9]{1,2})$  http://www.example.com/export.php?o=%1&lg=%2&site=%3&counter=%4 [NC,L] # for export.php

有什么想法吗?

提前致谢

【问题讨论】:

    标签: apache mod-rewrite apache-config


    【解决方案1】:

    RewriteCond 只属于直接跟随的RewriteRule。因此,在您的情况下,两个 RewriteCond 指令都只属于第一个 RewriteRule 指令,而第二个 RewriteRule 没有关联的 RewriteCond 指令。

    您可以在示例中通过合并两个 RewriteRules 来解决此问题:

    RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
    RewriteCond %{HTTP_HOST} ^([a-zA-Z]{3,6})\.example\.com$
    RewriteRule ^(index|export)/([a-z]{2})/([0-9]{1,2})/([0-9]{1,2})$ http://www.example.com/$1.php?o=%1&lg=$2&site=$3&counter=$4 [NC,L]
    

    还要注意$n而不是%n的用法,因为$n指的是RewriteRule的第n组匹配,而%n指的是第n组的匹配最后一次成功RewriteCond

    【讨论】:

      猜你喜欢
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-02
      • 1970-01-01
      • 2010-09-18
      • 2012-01-22
      相关资源
      最近更新 更多