0

这听起来应该很简单......https:如果未在具有字符串的 url 上定义,则尝试添加,包括 and after page=postratingsproorpage=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因此,如果定义了此 url, 它还应该将协议更改为 url: http://mydomain.com/index.php ?page=postratingspro;sa=thankyou 但如果它已经设置,https则根本不应该更改它.

4

1 回答 1

0

取决于你的意思是“任何”。

以下行是否应更改为 HTTPS?

http://mydomain.com/index.php?page=postratingsprothankyou

如果是这样,那么只需删除“[&\s]”(这意味着“接下来是一个&符号或空格”)。省略它意味着你不在乎接下来会发生什么。

如果仅在“postratingspro”是一个单独的单词时才应该更改,然后可能是标点符号或其他东西,则将“[&\s]”替换为“\b”(表示“单词边界”)。我推荐这个。

与“(&|$)”相同(这意味着下一个字符是 & 或字符串的结尾) - 我建议用“\b”替换。

于 2013-07-13T21:54:10.597 回答