htaccess重写:非www到https://www

问题描述 投票:0回答:1
Https://www.example.co.uk

。 显然,如果重定向正确确认,Google会吸引我。 当我尝试插入一些代码来解决此问题时,我会在域名之后找到我的路径问题。 在WordPress-vhost-config文件中使用我的代码。 我认为我与重写规则有某种冲突,但不知道该调整是什么。 RewriteEngine On RewriteRule ^bitnami/wordpress(/.*) $1 [L] # END WordPress fix for plugins and themes # BEGIN WordPress # https://wordpress.org/support/article/htaccess/#basic-wp RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d #this is the part that doesn't seem to work #RewriteCond %{HTTP_HOST} !^www\. #RewriteCond %{HTTPS}s on(s)|offs() #RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R] RewriteRule . /index.php [L] 我插入了此代码:

#this is the part that doesn't seem to work #RewriteCond %{HTTP_HOST} !^www\. #RewriteCond %{HTTPS}s on(s)|offs() #RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]

但是,由于URL路径无法正常工作,因此现在对此进行了评论。
	
您将代码插入错误的位置。单个“规则”由

RewriteRule

指令以及前面的
RewriteCond
指令(条件)组成。通过将新规则放置在您将其插入现有规则的中间并因此破坏的规则中。

您的新规则(规范重定向)需要在第一个指令之后立即进入顶部。 wo,您的新规则并不是严格正确的,原因有两个:

.htaccess mod-rewrite url-rewriting
1个回答
0
投票
它保留了请求的协议,即HTTP或HTTPS。它应该仅重定向https。 您已经实施了302(临时)重定向。对于

testing

来说,这是可以的,但是,最终需要是301(永久)重定向。
其他词:

RewriteEngine On

您还应该将HTTP实施到HTTPS重定向的HTTP,以供已正确的主机名的请求。这可以作为以上一项的附加规则实现(前提是您没有实施HST)。 

在WordPress-vhost-config文件中使用我的代码。

    不确定您的意思是非标准。如果将这些规则直接包含在
  1. RewriteEngine On # Redirect non-www to www (and HTTPS) RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]
  2. 配置中(这是该文件名似乎所暗示的),那么所有这些规则都是错误的,并且将会发生可怕的失败(在VHOST上下文中不允许
  3. <VirtualHost>)。因此,我认为它们被包含在RewriteBase
  4. 容器中(本身可能在A内部),并且禁用了文件? (尽管您已经标记了问题
<Directory>

?)

参考:

Https://httpd.apache.org/docs/2.4/mod/mod/mod_rewrite.html


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.