我有一个.htaccess文件:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([a-zA-Z-]+)\/([0-9]*)\/?$ ler.php?categoria=$1&id=$2
这适用于http://www.domain.com/frases/13571/
关键是我需要在应用此规则后将所有 HTTP 重定向到 HTTPS 。
所以我写这个:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([a-zA-Z-]+)\/([0-9]*)\/?$ ler.php?categoria=$1&id=$2
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
但是我没有像我想的那样工作。我在执行HTTP请求时得到了这个: https://www.domain.com/frases/13571/?categoria=frases&id=13571
只修改协议而不修改url的其他部分的正确代码是什么? 我认为我的代码在第一个规则中执行了2个请求,并且生成了这个错误的URL。
答案 0 :(得分:1)
L
标记应用于您的重写规则
您可以使用此代码
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteRule ^([^/]+)/([^/]+)/$ /ler.php?categoria=$1&id=$2 [L]
注意:
\/
可以是/
)答案 1 :(得分:0)
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
您从原始REQUEST_URI
重写,当前是您捕获的内容,因此请尝试:
RewriteRule (.*) https://%{HTTP_HOST}$1 [R=301,L]
或
RewriteRule (.*) https://$1 [R=301,L]
如果不起作用,重写日志可能很有用。