使用.htaccess重定向时,如何测试REQUEST_URI是什么?

时间:2012-09-13 16:53:06

标签: .htaccess mod-rewrite

我正在尝试做一些非常简单的事情,但它正在踢我的屁股哈哈。我有我的网站,今天早上我获得了SSL证书。我希望我的用户被重定向到安全站点,但我只需要我的网站的某个部分的证书,所以我不想担心其他地方。证书是domain.com而不是www.domain.com。我网站上需要证书的部分,所有页面都在apps目录中。例如domain.com/apps/login.php。这是我在.htaccess文件中添加的内容。

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/apps/.*$
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://domain\.com%{REQUEST_URI} [R=301,L]

现在我将解释我认为应该做什么,我想告诉我哪里错了哈哈。

  • RewriteEngin On - 允许重定向
  • RewriteCond %{REQUEST_URI} ^/apps/.*$ - 检查用户是否在apps目录中
  • RewriteCond %{HTTPS} !=on - 检查用户是否已在使用https://
  • RewriteRule ^(.*)$ https://domain\.com%{REQUEST_URI} [R=301,L] - 重定向

这部分有效。当我输入www.domain.com/apps/login.php时,它会重定向到https://domain.com/apps/login.php。完善。但如果我只输入www.domain.com,则会重定向到https://domain.com。所以似乎我的第RewriteCond %{REQUEST_URI} ^/apps/.*$行被打破了。我需要做些什么来使它只在它们位于apps目录时重定向到安全站点?

1 个答案:

答案 0 :(得分:1)

你的规则在我看来它应该有效,但无论如何你都不需要进行RewriteCond %{REQUEST_URI}测试。只需在^apps

中加入RewriteRule即可
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^apps/(.*)$ https://domain.com/apps/$1 [R=301,L,NC]