【问题标题】:.htaccess redirect all but a few urls.htaccess 重定向除少数几个网址外的所有网址
【发布时间】:2014-10-18 22:03:28
【问题描述】:

所以,基本上,我有以下 .htaccess

  RewriteEngine On
  RewriteBase /  

  RewriteCond %{REQUEST_URI} !^/online$
  RewriteRule (.*)$ https://secure.example.com/$1 [R=301,L]

但它不起作用:

(http) example.com/online 被重定向到 (https)secure.example.com

我想要的是:

(http) example.com -> (https)secure.example.com

(http) example.com/foo/ -> (https)secure.example.com/foo/

(http) example.com/online/ -> (http) example.com/online/(无重定向)

那是因为在 example.com/online 我有一个 iframe,它的 src 不在 HTTPS 上。 另一种选择是以某种方式强制浏览器在页面上显示非 https 数据(现在我有一个空页面,因为 iframe 被浏览器阻止)

【问题讨论】:

    标签: apache .htaccess redirect iframe


    【解决方案1】:

    您可以在您的 htaccess 中(在根文件夹中)用此代码替换您当前的代码

    RewriteEngine On
    
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} !^secure\. [NC]
    RewriteCond %{REQUEST_URI} !^/online [NC]
    RewriteRule ^(.*)$ https://secure.example.com/$1 [R=301,L]
    
    RewriteCond %{HTTPS} on [OR]
    RewriteCond %{HTTP_HOST} ^secure\. [NC]
    RewriteRule ^online(/.*)?$ http://example.com/online$1 [R=301,L]
    

    如果是http,则第一条规则重定向到等效https://secure OR域不以secure 开头AND url 不是/online/(@ 987654326@)。

    如果是https 或域以secure 开头,则第二条规则将online/ 重定向到http://example.com/online/

    【讨论】:

    • hmmm.... 似乎不起作用。可能问题出在我身上……所以,让我们进一步解释一下: 1. 安全子域具有不同的 .htaccess 文件; 2. 它也应该适用于 /online/foo/ , /online/boo/ 等 3. 为了让框架得到这个,我使用RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L]
    • 对于您的第一点,安全 htaccess 中有什么?对于第二点,我编辑了我的答案以使其发挥作用。第三点,你必须把我的代码之前你的框架规则
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多