我知道这是服务器问题,但是ServerFault很难获得答案。不要将此问题标记为ServerFault问题!!!
我正在测试目录而不使用斜杠
example.co/test
引发错误并重定向到 example.co:443/test / 。
当我删除ErrorDocument以查看发生了什么时,这就是我得到的:
我尝试了许多不同的方法,包括:
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteCond %{LA-U:REQUEST_FILENAME} -d
RewriteRule ^/(.*[^/])$ https://%{HTTP_HOST}/$1/ [R=301,L,QSA]
没有运气。
添加斜杠后,出现 mod_dir ,是在调用HTTP请求吗?
这是我的默认SSL代码:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
<IfModule mod_ssl.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
Protocols h2 h2c http/1.1
ErrorDocument 400 https://example.co
ErrorDocument 403 https://example.co
ErrorDocument 404 https://example.co
ErrorDocument 405 https://example.co
ErrorDocument 408 https://example.co
ErrorDocument 500 https://example.co
ErrorDocument 502 https://example.co
ErrorDocument 504 https://example.co
<Directory /var/www/html/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
Alias "/library/" "/var/www/html/example/library/"
<VirtualHost _default_:443>
ServerName example.co
DocumentRoot /var/www/html/example
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.co/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.co/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.co/chain.pem
</VirtualHost>
</IfModule>
所以 example.co/test / 可以很好地工作。
example.co/test 重定向到 example.co:443/test / 并引发错误。为什么 DirectorySlash 做HTTP东西?