0

これは非常に単純なはずのように聞こえます...またはを含む文字列を持つURLで定義されていない場合に追加しようとしてhttps:いますpage=postratingspropage=paypaltest

ここで誰かの助けを借りて、私が使用しているコードは次のとおりです。

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 に答える