【问题标题】:Multipart htaccess redirect多部分 htaccess 重定向
【发布时间】:2012-10-27 00:04:06
【问题描述】:

大家好,我在让我的 htaccess 正确重定向时遇到了一些麻烦,希望能得到一些帮助。

我期待 DEV-domain.com?CampID=AB12345 重定向到 http://DEV-www.domain.com/landing/external-marketing/direct-mail/AB?CampId=AB12345

RewriteCond %{HTTP_HOST} ^DEV-(www\.)?domain\.com [NC]
RewriteCond %{QUERY_STRING} ^CampID=
RewriteRule (\w{2})(\w{5})$ http://DEV-www\.domain\.com/landing/external-marketing/direct-mail/$1?CampId=$1$2 [R=301,L]

很遗憾,由于某种原因我无法让它工作?

【问题讨论】:

    标签: .htaccess redirect http-redirect


    【解决方案1】:

    因为 RewriteRule 匹配适用于 url 路径,而不是查询字符串。试试这个:

    RewriteCond %{HTTP_HOST} ^DEV-(www\.)?domain\.com [NC]
    RewriteCond %{QUERY_STRING} ^CampID=(\w{2})(\w{5})
    RewriteRule .* http://DEV-www.domain.com/landing/external-marketing/direct-mail/%1?CampId=%1%2 [R=301,L]
    

    您也不需要在目标网址中转义点.,只需在匹配模式中。请注意,如果您决定将目标网址设为CampID 而不是CampId,则需要设置另一个条件:

    RewriteCond %{REQUEST_URI} !^/landing/external-marketing/direct-mail/
    

    为了避免无限重定向作为目标,CampID 将符合您的 RewriteCond 规则...

    【讨论】:

    • 实际上我们可以使用^(?i:campid)=(\w{2})(\w{5})对匹配进行不敏感的重写,该域必须是匹配的一部分,所以我不确定是否可以合并重写条件=(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多