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



我想在这里做一些非常简单的事情,但它踢我的屁股哈哈。我有我的网站,今天早上我得到了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/.*$-检查用户是否在应用程序目录中
  • 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目录中时重定向到安全站点?

在我看来,您的规则应该有效,但在任何情况下,您都不需要RewriteCond %{REQUEST_URI}测试。只需在RewriteRule:中包含^apps

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