【问题标题】:.htaccess Rewrite non-www to www except specific dynamic pages.htaccess 将非 www 重写为 www,除了特定的动态页面
【发布时间】:2014-01-25 20:50:32
【问题描述】:

我在这里和其他地方查看了无数答案,但没有找到我真正需要的答案。我正在使用旧的 Joomla 1.5 网站,而不是根据所有者的具体要求使用 SEF。但我希望所有非 www 请求都被重写为 www,除了特定的表单/付款页面。

Example: 
http://domain.com/index.php?option=com_content&view=article&id=43&Itemid=11 
becomes
http://www.domain.com/index.php?option=com_content&view=article&id=43&Itemid=11
except a payment page
http://domain.com/index.php?option=com_rsform&formId=3
or 
http://www.domain.com/index.php?option=com_rsform&formId=3
becomes
https://domain.com/index.php?option=com_rsform&formId=3

我正在使用此代码:

RewriteEngine On

########## Begin - Redirect non-https non-www to www
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=302,L]
########## End - Redirect non-www to www

只要他们坚持我指向付款页面的链接,我就可以到达那里,但我想确保它是万无一失的。并更好地了解如何做到这一点。我可能已经厌倦了一百种不同的规则 - 我正在尝试学习正则表达式问题,但无法及时为我的客户提供它。

我可以在任何形式上使用它,因此“option=com_rsform”将始终在 url 中。我不知道在制定条件时是否将其视为字符串或变量..无论如何我非常感谢建议的解决方案。

【问题讨论】:

    标签: regex .htaccess mod-rewrite joomla


    【解决方案1】:

    试试这个代码:

    RewriteEngine On
    
    ########## Begin - Redirect non-https non-www to www
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{QUERY_STRING} !^option=com_rsform&formId=3 [NC]
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=302,L]
    ########## End - Redirect non-www to www
    
    # payment URL
    RewriteCond %{HTTPS} off
    RewriteCond %{QUERY_STRING} ^option=com_rsform&formId=3 [NC]
    RewriteRule ^(.*)$ https://domain.com/$1 [R=302,L]
    

    【讨论】:

    • 感谢您的快速回复!在这种情况下,我必须将每个表单添加到两个部分?
    • 是的,这两个规则都需要检查该查询字符串是否存在。还要确保这些规则是首要规则。现在下线了。
    • 好的,但这不适用于我的问题中的最后一种情况:domain.com/index.php?option=com_rsform&formId=3 应该变成domain.com..
    • 是的,没有其他重写。当我说它不起作用时,我的意思是它给出了一个安全异常,然后没有删除它确实添加了 https 的“www”。但部分原因是为了避免安全异常,我在原帖中没有提到。我很抱歉。
    • SSL 证书协商发生在重写规则之前。因此,如果您的证书适用于 www 主机并且您打开一个非 www 的 URL,那么证书警告仍然会出现。
    猜你喜欢
    • 2017-01-02
    • 2015-07-29
    • 2014-12-16
    • 2014-03-26
    • 2012-11-16
    • 1970-01-01
    • 2019-01-29
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多