Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Simple.htaccess问题(www到https给出错误)_.htaccess - Fatal编程技术网

Simple.htaccess问题(www到https给出错误)

Simple.htaccess问题(www到https给出错误),.htaccess,.htaccess,我的.htaccess文件正是我所需要的。唯一的问题是,如果我尝试在我的网站上添加www,那么它会给我一个“警告:潜在的安全风险”错误 如果我在左列中键入内容,它将转到: 如果我键入以下任何URL,它们都会转到: 这是完美的。但当我将www添加到https时: https://www.mywebsite.com/folder/index.html 我得到了安全问题,它不会删除www 有什么想法我可以添加或删除?以下是我当前的代码,它可以完美地满足我所需的所有其他功能: Options -Mul

我的.htaccess文件正是我所需要的。唯一的问题是,如果我尝试在我的网站上添加www,那么它会给我一个“警告:潜在的安全风险”错误

如果我在左列中键入内容,它将转到:

如果我键入以下任何URL,它们都会转到:

这是完美的。但当我将www添加到https时:

https://www.mywebsite.com/folder/index.html
我得到了安全问题,它不会删除www

有什么想法我可以添加或删除?以下是我当前的代码,它可以完美地满足我所需的所有其他功能:

Options -MultiViews

RewriteEngine On

# HTTP to HTTPS canonical redirect
RewriteCond %{HTTP_HOST} mywebsite\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule (.*) https://mywebsite.com/$1 [R=301,L]

# Abort early if the request already maps to (or looks like) a file or directory
RewriteCond %{REQUEST_URI} \.\w{2,4}$ [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^(products/view)/([^/]*)/?(.*) $1.php?id=$1&cat=$2&cat2=$3 [L]

RewriteRule ^(products)/([^/]*)/?(.*) $1/index.php?id=$2&cat=$3 [L]

# 3. Extensionless URLs for other requests
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.*) $1.php [L]

提前非常感谢

您的SSL证书对于
www.mywebsite.com
无效,因为您尚未随附证书一起颁发。这意味着您在颁发SSL证书时没有输入
www.mywebsite.com

如何解决这个问题: 如果您使用的是像LetsEncrypt这样的服务,您可以在
www.mydomain.com
中重新发布它


如果使用自签名证书: 如果您已经颁发了自签名证书,则必须重新颁发该证书,并包含主题替代名称

要发布包含主题备选名称的自签名证书,请执行以下操作:

  • 创建名为
    req.conf
    的文件,并将以下内容添加到其中:
  • 并运行:

    openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout cert.pem -out cert.pem -config req.conf -extensions 'v3_req'
    
    并使用这些证书

    顺便说一句,如果仍然不工作: 顺便说一句,改变:

    # HTTP to HTTPS canonical redirect
    RewriteCond %{HTTP_HOST} mywebsite\.com [NC]
    RewriteCond %{SERVER_PORT} 80
    RewriteRule (.*) https://mywebsite.com/$1 [R=301,L]
    
    致:


    重定向所有非

    的内容听起来好像您的SSL证书只对
    mywebsite.com
    有效,但对
    www.mywebsite.com
    无效-因此您当然会收到安全警告,如果您试图访问
    https://www.mywebsite.com
    @CBroe我明白……但如果我试图转到“”,有没有办法强制删除www?只有在您获得一份包含主机名的证书时才能
    www.mywebsite.com
    。否则,客户端浏览器将无法成功连接到
    https://www.mywebsite.com
    首先,如果没有这一点,您也无法重定向到其他地方。Chi.C.J.Rajeeva Lochana,谢谢您的回复。第一部分我不能做,因为那太复杂了,我很抱歉:(我确实按照你的建议更改了htaccess文件,但没有任何区别。我是否可以通过仅在htaccess文件中应用一些更改来修复此问题?非常感谢!!!@Andrea如果不按照上面提到的步骤操作,就没有办法了。
    openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout cert.pem -out cert.pem -config req.conf -extensions 'v3_req'
    
    # HTTP to HTTPS canonical redirect
    RewriteCond %{HTTP_HOST} mywebsite\.com [NC]
    RewriteCond %{SERVER_PORT} 80
    RewriteRule (.*) https://mywebsite.com/$1 [R=301,L]
    
    # HTTP to HTTPS canonical redirect
    RewriteCond %{HTTP_HOST} !mywebsite\.com [NC,OR]
    RewriteCond %{SERVER_PORT} 80
    RewriteRule (.*) https://mywebsite.com/$1 [R=301,L]