【问题标题】:.htaccess force www and force https for certain path and Concrete5 pretty URLs.htaccess 强制 www 并强制 https 用于某些路径和 Concrete5 漂亮的 URL
【发布时间】:2014-10-06 10:54:45
【问题描述】:

编辑:这个问题现在没有实际意义,因为整个网站都将使用 HTTPS 提供服务

我的.htaccess 导致重定向循环。

我需要所有三个部分都可以工作,每个部分的目的都在评论中。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# Force HTTPS for /book unless dev or already there
RewriteCond %{HTTP_HOST} !^dev\.
RewriteCond %{HTTPS} !^on$
RewriteRule ^book https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Force www prefix unless dev or already there
RewriteCond %{HTTP_HOST} !^dev\.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ %{REQUEST_PROTOCOL}://www.%{HTTP_HOST}/$1 [L,R=301]

# Concrete5 pretty URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]
</IfModule>

我必须在实时服务器上工作,因为证书只在那里有效(需要www.)。

我已经尝试了上述的许多变体,但我很困惑,所以我希望对此有新的看法会有所帮助,非常感谢提前。

【问题讨论】:

    标签: .htaccess mod-rewrite redirect https concrete5


    【解决方案1】:

    您的第二条规则看起来不正确,因为 REQUEST_PROTOCOL 的值为 HTTP/1.1

    您可以使用此代码:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    
    # Force HTTPS for /book unless dev or already there
    RewriteCond %{HTTP_HOST} !^dev\.
    RewriteCond %{HTTPS} !^on$
    RewriteRule ^book https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
    
    # Force www prefix unless dev or already there
    RewriteCond %{HTTPS}s on(s)|
    RewriteCond %{HTTP_HOST} !^(?:www|dev)\. [NC]
    RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
    
    # Concrete5 pretty URLs
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME}/index.html !-f
    RewriteCond %{REQUEST_FILENAME}/index.php !-f
    RewriteRule . index.php [L]
    </IfModule>
    

    【讨论】:

    • 谢谢,但我仍然收到重定向循环。你能告诉我你在做什么不同的事情(除了REQUEST_PROTOCOL 位)来避免循环吗?
    • 您是否注意到条件RewriteCond %{HTTPS}s on(s)| 的使用和它的反向引用%1。测试它一个新的浏览器以避免 301 缓存。同时告诉我你在浏览器中输入的网址。
    • 谢谢。我的问题现在变得没有实际意义,因为我们现在将整个站点更改为使用 HTTPS。
    • 在这种情况下,您仍然需要一些轻量级规则来强制 https
    猜你喜欢
    • 2016-04-05
    • 2012-07-11
    • 2013-05-31
    • 2013-03-06
    • 1970-01-01
    • 2011-09-14
    • 2015-05-10
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多