到目前为止,我已经尝试了大约10个解决方案,几乎所有的serverfault和stackoverflow相关的问题。丢了一些头发等。
我的网站曾是http://example.com 现在是https://example.com
http://example.com/filename.html的所有链接 转入https://example.com/filename.html
http://example.com/directory的所有链接 转到https,然后添加斜杠:https://example.com/directory/
和https://example.com/directory 还会添加斜杠https://example.com/directory/
但http://example.com/directory/
所有链接(这是我的大部分外部信息链接)404!
这是我对default.conf的最新尝试
<VirtualHost *:80>
ServerAdmin support@example.com
DocumentRoot /srv/www/example.com/public_html/
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,NC,R=301]
<Directory />
Options +FollowSymLinks
AllowOverride None
</Directory>
<Directory /srv/www/example.com/public_html/>
Options -Indexes +FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /srv/www/example.com/logs/error.log
LogLevel warn
CustomLog /srv/www/example.com/logs/access.log combined env=!dontlog
</VirtualHost>
继承我ssl.conf的开始:
<VirtualHost _default_:443>
ServerAdmin support@example.com
ServerName example.com:443
ErrorDocument 404 /404.php
DocumentRoot /srv/www/example.com/public_html
<Directory />
<IfModule mod_expires.c>
ExpiresActive off
</IfModule>
Options +FollowSymLinks
AllowOverride None
</Directory>
<Directory /srv/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
ExpiresActive On
ExpiresDefault "access plus 12 hours"
ExpiresByType application/javascript "access plus 10 months"
ExpiresByType image/jpg "access plus 10 months"
ExpiresByType image/jpeg "access plus 10 months"
ExpiresByType image/gif "access plus 10 months"
ExpiresByType image/png "access plus 10 months"
ExpiresByType text/css "access plus 10 monthss"
ExpiresByType image/x-icon "access plus 10 months"
FileETag MTime Size
答案 0 :(得分:0)
在非ssl指令中尝试毯子重定向:
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
的所有内容
答案 1 :(得分:0)
这是一个艰难的问题,我有另一个启用了网站的.conf文件,它将旧的子域重定向到主ssl网站中的文件夹名称。 我遵循的一些教程建议,当我这样做时,我应该使用serverAlias作为主要网站,糟糕的是,apache正在subdomain.conf中指定的重定向,就像它是main-ssl.conf网站一样。线索在日志文件中,404用于:
/old-subdomain-redirect/browser-Asked-Folder/
所以看起来在另一个.conf文件中使用相同的ServerAlias可以合并指令。
令人困难的是浏览器在没有询问服务器的情况下缓存重定向,所以当我禁用所有其他网站时,我看到了相同的结果: - /