我正在使用这行代码将特定 url 重定向到 ssl 版本,同时显示一个简短的 SEO 友好名称:
RewriteRule ^signin$ https://server.com/login.php [L]
这在 https 打开时有效,但是当用户在 http 上时,重定向发生而不重写,地址栏显示完整路径
https://.../login.php
代替
https://.../signin
有没有办法让 SEO 名称起作用?
我正在使用这行代码将特定 url 重定向到 ssl 版本,同时显示一个简短的 SEO 友好名称:
RewriteRule ^signin$ https://server.com/login.php [L]
这在 https 打开时有效,但是当用户在 http 上时,重定向发生而不重写,地址栏显示完整路径
https://.../login.php
代替
https://.../signin
有没有办法让 SEO 名称起作用?
当您不在 HTTPS 上时,这会导致外部重定向,因为协议不匹配 - 并且由于服务器明确告诉您的浏览器发出新的请求https://server.com/login.php
,这就是您在地址栏中看到的内容。
您应该分两步执行此操作:如果/signin
请求并且您不在 HTTPS 上,则重定向到同一路径的 HTTPS 版本。/signin
然后在内部重写(所以不指定协议和主机名)到login.php
.
RewriteCond %{HTTPS} ^off$
RewriteRule ^signin$ https://server.com/signin [L]
RewriteRule ^signin$ /login.php