使用子域重写url返回“无法访问此网站”

时间:2018-09-22 09:35:16

标签: .htaccess url redirect

在这里我一定会错过一些非常明显的东西。我正在尝试将转到诸如product1.mywebsite.com的子域的用户转到www.mywebsite.com/products/?p=product1,其中“ product1”是我要传递给页面的变量。

我已经阅读了本网站上的各种文章,以及其他文章,这些文章表明这​​很容易,但根本行不通!!! 如果有帮助,我正在Plesk上使用‪CentOS6.10

这是我最近的尝试:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^mywebsite\.com [NC]
RewriteRule ^(.*)$ https://www.mywebsite.com/pruducts/?p=$1 [L,R=301]

就像我读过的所有帖子一样,但是我缺少了一些东西。 .htaccess文件位于网站的根文件夹中。我什至尝试将其放在其上方的文件夹中,但仍然没有乐趣。

这就像该网站正在寻找子域而不是查找子域(因为它不存在)时,它应该只将子域中使用的单词(在这种情况下为product1)用作mywebsite上的变量.com / pruducts /页面。

我需要在Plesk中打开某些东西吗?

1 个答案:

答案 0 :(得分:1)

您的条件明确指出,仅当主机名在“ mywebsite.com”之前没有 时,才应应用以下规则。

您的方法的第二个问题是,您不能像显然尝试的那样在重写规则中访问主机名本身。


相反,请尝试以下操作:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.mywebsite\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(\w+)\.mywebsite\.com$ [NC]
RewriteRule ^ https://www.mywebsite.com/pruducts/?p=%1 [R=301]

还有一个一般性说明:您应该始终喜欢将此类规则放置在http服务器主机配置中,而不要使用动态配置文件(“ .htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为,难以调试的原因,并且确实降低了http服务器的速度。仅当您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供商)或坚持编写自己的规则的应用程序(这显然是安全的噩梦)时,才提供它们作为最后的选择。