2

我正在使用这行代码将特定 url 重定向到 ssl 版本,同时显示一个简短的 SEO 友好名称:

RewriteRule ^signin$ https://server.com/login.php [L]

这在 https 打开时有效,但是当用户在 http 上时,重定向发生而不重写,地址栏显示完整路径

https://.../login.php

代替

https://.../signin

有没有办法让 SEO 名称起作用?

4

1 回答 1

4

当您不在 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
于 2013-09-09T12:33:47.487 回答