如何使用重写规则重定向到https但相对?

时间:2014-03-26 14:48:19

标签: php .htaccess mod-rewrite redirect rewrite

有没有办法重定向到特定页面但是添加https并同时保持路径相对?

RewriteEngine On
RewriteRule ^user/([^/]+)/settings/?$ https://%{HTTP_HOST}/settings/settings.php?u=$1 [QSA,L]

上述方法效果很好但是我们从https://%{HTTP_HOST}开始就是绝对的 这会使结束网址显示确切的请求:https://www.mydomain.com/settings/settings.php?u=John

相反,我们可以重定向到某个页面,以相对方式添加https吗?这样确切的路径就会被隐藏起来,我们只会看到一个"文件夹结构":https://www.mydomain.com/user/John/settings

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

在内部重写之前,Trick是对漂亮的URL做http->https(R = 301)规则。所以这样的事情会起作用:

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]

RewriteRule ^user/([^/]+)/settings/?$ /settings/settings.php?u=$1 [QSA,L,NC]