0

我在导致问题的几个重定向之间存在冲突。

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ https://www.mywebsite.org/ [R=301,L]

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Options +FollowSymLinks -MultiViews
RewriteCond %{REQUEST_FILENAME} !403\.shtml
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*) index.php?a_aid=$1  [NC,L,R=301]

我遇到的问题是,当有人输入非安全网址时,它会将他们转发到

http://www.mywebsite.org/index.php?a_aid=https://www.mywebsite.org/url
4

1 回答 1

1

我敢打赌,您需要在行尾添加 [L] :

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

L 标签告诉代码在应用规则时停止运行,在您的情况下,它会继续运行,因此应用最后一条规则。

 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

我想这就是我的灵魂。

在本节中,您将找到可以应用于您的规则的不同标志。我建议你也添加 NC 标志(不区分大小写),这样它也匹配 HTTPS

http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule

于 2012-11-01T02:18:47.537 回答