我已经浏览了这里和其他地方的无数答案,但没有找到我需要的东西。我正在使用旧的 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”将始终出现在网址中。我不知道在制定条件时是否将其视为字符串或变量..无论如何,我真的很感激建议的解决方案。
最佳答案
试试这个代码:
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]
关于regex - .htaccess 将非 www 重写为 www(特定动态页面除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20984044/