这听起来应该非常简单......如果没有在包含https:
或page=postratingspro
page=paypaltest
这是我正在使用的代码,在stackoverflow的某人的帮助下:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?page=(paypaltest|postratingspro)[&\s] [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{QUERY_STRING} !(^|&)page=(paypaltest|postratingspro)(&|$) [NC]
RewriteRule ^(index\.php)?$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NC]
我正在查看此[&\s]
和(&|$)
,因此想知道如何更改为包含任何字符串?因此,如果定义了此网址,它还应将协议更改为https
:http://mydomain.com/index.php?page=postratingspro;sa=thankyou
但如果它已经设置为https
,它根本不应该改变它。
答案 0 :(得分:0)
取决于你的意思。
以下行是否应更改为HTTPS?
http://mydomain.com/index.php?page=postratingsprothankyou
如果是这样,那么只需删除“[& \ s]”(这意味着“下一个是&符号或空格”)。省略它意味着你不关心接下来会发生什么。
如果只有在“postratingspro”是一个单独的单词,然后可能是标点符号或其他内容时才更改,则将“[& \ s]”替换为“\ b”(表示“单词边界”)。我推荐这个。
与“(& | $)”相同(这意味着下一个字符是&或字符串的结尾) - 我建议替换为“\ b”。