.htaccess https也可以在网址后编辑任何内容

时间:2013-07-13 21:18:57

标签: apache .htaccess mod-rewrite

这听起来应该非常简单......如果没有在包含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](&|$),因此想知道如何更改为包含任何字符串?因此,如果定义了此网址,它还应将协议更改为httpshttp://mydomain.com/index.php?page=postratingspro;sa=thankyou 但如果它已经设置为https,它根本不应该改变它。

1 个答案:

答案 0 :(得分:0)

取决于你的意思。

以下行是否应更改为HTTPS?

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

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

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

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