【问题标题】:htaccess redirect 4 specific pages to httpshtaccess 将 4 个特定页面重定向到 https
【发布时间】:2012-03-26 21:26:46
【问题描述】:

我有一个问题,我需要将我网站上的 4 个特定页面重定向到他们的 https 安全版本。

我目前有一个 htaccess 文件,它将 example.comwww.example.com 重定向到 https://example.com

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com$ [NC]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://example.com/$1 [R] 

我需要的是类似的东西

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page1.php$ [NC]
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page2.php$ [NC]
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page3.php$ [NC]
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page4.php$ [NC]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://example.com/page1.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page2.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page3.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page4.php$1 [R] 

请注意,我已从上述代码中删除了第三行 RewriteCond 行,因为我不希望我网站上的每个页面都只显示我特别声明的页面。

我该如何解决这个问题?

另外,这条线是否涵盖 www.example.com 和 example.com?

RewriteCond %{HTTP_HOST} ^(.*\.)*example.com$ [NC]

我假设

^(.*\.)*

有什么关系吗?

【问题讨论】:

    标签: .htaccess redirect mod-rewrite url-rewriting


    【解决方案1】:
    Options +FollowSymlinks
    RewriteEngine On
    RewriteBase /
    
    #redirect www.mydomain.com to mydomain.com (or any other subdomain)
    RewriteCond %{HTTP_HOST} !^mydomain.com$ [NC]
    RewriteRule ^(.*)$ http://mydomain.com/$1 [L,R=301]
    
    #force https for certain pages    
    RewriteCond %{HTTPS} !=on
    RewriteRule ^(page1\.php|page2\.php|page3\.php|page4\.php)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
    

    【讨论】:

      【解决方案2】:

      我已经修改并清理了您的代码。您可以在 $DOCUMENT_ROOT 中的 .htaccess 文件中使用此代码:

      Options +FollowSymLinks -MultiViews
      # Turn mod_rewrite on
      RewriteEngine On
      RewriteBase /
      
      # HTTPS is not already on
      RewriteCond %{HTTPS} !=on
      # Redirect to HTTPS is URI is page1.php OR page2.php OR page3.php OR page4.php
      RewriteRule ^page[1234]\.php$ https://mydomain.com%{REQUEST_URI} [L,R]
      

      【讨论】:

      • 感谢您的回复 anubhava,我还没有尝试过您的回复,但看起来可以。我没有先尝试您的唯一原因是您似乎正在为 page1.php、page2.php 等使用某种数组。这样做的问题是我无法单独插入特定的页面名称,例如我的页面实际上并没有被称为 page1、page2 等,我只是为了简单起见而使用它们。不幸的是,我对重写以改变它知之甚少。无论如何,再次感谢您的回复。
      • [1234] 不是一个数组,而是正则表达式方式来表示 1 或 2 或 3 或 4 之一。我会使用:RewriteRule ^(page1|page2|page3|page4)\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R] 无论如何我认为你接受了正确的答案为@ Gerben 先答对了 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      • 2012-11-07
      • 2013-10-18
      • 2017-08-16
      相关资源
      最近更新 更多