regex - .htaccess 将非 www 重写为 www(特定动态页面除外)

标签 regex .htaccess mod-rewrite joomla

我已经浏览了这里和其他地方的无数答案,但没有找到我需要的东西。我正在使用旧的 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/

相关文章:

java - 如何将字符串 "[quote]"替换为仅 "and [/quote] to "

apache - Laravel |共享主机路由无法正常工作

.htaccess - 何时在 mod_rewrite 中使用 [L] 标志

.htaccess - 在 .htaccess 中强制使用 SSL + WWW,同时启用其他子域

.htaccess - 如果 url 不包含特定目录,则 htaccess 重定向

mod-rewrite - 使用 mod_rewrite 实现具有多个变量的友好 URL 的最佳方法是什么?

javascript - DataTables 智能搜索 - 未按预期运行

c# - 从给定文本中查找匹配的第一个单词 - 正则表达式

java - 使用 Java RegEx 如何仅返回完全匹配的内容?

apache - .htaccess 使用子文件夹重写规则强制 SSL