用于Wordpress的HTTPS重定向和独立文件夹

时间:2017-09-26 15:20:01

标签: wordpress .htaccess ssl mod-rewrite https

我对https重定向问题感到疯狂。

我刚刚在我的小网站https://handletteringlernen.de上切换到https。 我这样做是通过将Wordpress的基本和主页URL更改为https。之后我改变了所有的URL,现在一切正常。我没有在.htaccess中添加任何内容。

现在我有一个用户可以使用小工具的文件夹:http://handletteringlernen.de/generator/ 此文件夹不是wordpress安装的一部分,因此没有重定向到https。

当我添加

RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

到我的根.htaccess我有很多重定向。当我在该特殊文件夹(/ generator /)中放置一个额外的.htaccess时,它也不起作用。

从/ generator /到https://handletteringlernen.de/generator/执行特定的301重定向是没有意义的(无限重定向)。

我被困 - 这样做的方法是什么?有wordpress和其他文件夹被迫使用https ?!没有得到“太多重定向”警告。

编辑: 我的根.htaccess现在看起来像那样:

`#BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

RewriteEngine On
Redirect 301 /the-ultimate-handlettering-alphabet/ 
https://handletteringlernen.de/das-ultimative-handlettering-alphabet/
RewriteCond %{REQUEST_URI} !^\/generator(\/.*)?$

# Deflate Compression by FileType
<IfModule mod_deflate.c>
    AddType image/svg+xml .svg
    AddOutputFilterByType DEFLATE image/svg+xml
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/atom_xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE application/x-shockwave-flash
</IfModule>

# Ablaufzeiten festlegen
<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault "access plus 5 minutes"
    ExpiresByType image/ico "access plus 1 year"
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
    ExpiresByType font/ttf "access plus 1 month"
    ExpiresByType font/otf "access plus 1 month"
    ExpiresByType font/x-woff "access plus 1 month"
    ExpiresByType image/svg+xml "access plus 1 month"
    ExpiresByType application/x-shockwave-flash "access plus 1 month"
    ExpiresByType text/html "access plus 4 hours"
    ExpiresByType text/htm "access plus 4 hours"
    ExpiresByType text/javascript "access plus 7 days"
    ExpiresByType text/css "access plus 7 days"
    ExpiresByType text/xml "access plus 7 days"
    ExpiresByType application/xml "access plus 0 seconds"
    ExpiresByType application/json "access plus 0 seconds"
    ExpiresByType text/cache-manifest "access plus 0 seconds"
</IfModule>

# Protect wp-login.php
<Files wp-login.php>
  AuthName "Protected Admin-Area"
  AuthType Basic
  AuthUserFile /var/www/web203/html/handletteringlernen/.htpasswd
  Require valid-user
</Files>`

我的主机告诉我他们正在使用某种SSL代理。也许这会导致问题?!

1 个答案:

答案 0 :(得分:1)

这是您可以放在/ generator文件夹中的.htaccess的内容:

RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteCond %{REQUEST_URI} ^/?generator(/.*)?$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/generator%1 [R=301,L]

您可能需要将RewriteCond %{HTTPS} !=on [NC]替换为

RewriteCond %{HTTP:X-Forwarded-SSL} !=on [NC]

如果它不起作用,您的Apache服务器可能会遇到一些其他配置问题。我在Apache 2.4.27的Ubuntu 16.04.03服务器上测试了这个位置。

编辑:
由于SSL-PROXY,服务器不知道任何关于SSL的事情,但也许我们得到了原始的Request Schema。因此RewriteCond %{HTTPS} !=on [NC]尝试RewriteCond %{REQUEST_SCHEME} !=https [NC]

的状态