8

我有一个设置,在我的 FTP 根目录的不同子文件夹中托管了几个站点


    ROOT
    -site1folder
    -site2folder

我有 2 个与该帐户无关的域名。我已将域的 DNS 记录更改为指向我的主机帐户,但我需要 2 个不同的 URL 才能转到正确的子文件夹以加载正确的站点,而不是转移域。域是

  • www.site1.com
  • www.site2.com

理想情况下,我希望站点 1 加载站点 1 文件夹的内容,站点 2 及其相应的文件夹也是如此。

我目前在我的根目录中有一个 .htaccess 文件,我通过查看不同的帖子将其混合在一起。我是.htaccess 的新手。我目前正在尝试让站点 1 指向 site1 文件夹


    Options +FollowSymLinks

    #Turns the rewrite engine on.
    RewriteEngine on

    #Fix missing trailing slash character on folders.
    RewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]

    RewriteBase /website1
    #www.site1.co.uk and site1.co.uk will map to the folder

    RewriteCond %{HTTP:Host} ^(?:www\.)?site1\.co.uk
    RewriteRule (.*) /site1 [NC,L,NS]

当我加载这个时会发生什么,我得到了 site1 文件夹的内容,但是在这个 URL site1.co.uk/site1

我根本不希望 URL 改变。我只想让它加载它指向的子文件夹的内容。

任何想法都将不胜感激,即使它不能不这样做,而是我应该以不同的方式来做。

4

2 回答 2

20

好吧,经过大量的头撞和阅读大量文档以解密其他代码后,我最终自己解决了这个问题。这是我所做的...



    Options +FollowSymLinks


    RewriteEngine on
    #========================================================================
    # FIRST Handle the http requests first before removing the additional url junk
    #========================================================================
    #rule for site1.com to link to site1folder directory
    RewriteCond %{HTTP_HOST} ^(www.)?site1.com$
    RewriteCond %{REQUEST_URI} !^/site1folder/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /site1folder/$1
    #rule for site2.com to link to site2folder directory. Its the same as above just with site2 URL and subfolder
    RewriteCond %{HTTP_HOST} ^(www.)?site2.com$
    RewriteCond %{REQUEST_URI} !^/site2folder/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /site2folder/$1

    #==========================================================
    # SECOND Remove the additional url junk once the new url is loaded
    #==========================================================
    #rule for site1 url rewrite to remove /site1foler/index.php from the URL
    RewriteCond %{HTTP_HOST} ^(www.)?site1.com$
    RewriteRule ^(/)?$ site1folder/index.php
    #rule for site2 url rewrite to remove /site2foler/index.php from the URL. Again its the same as above just with the site2 URL and sub folder info.
    RewriteCond %{HTTP_HOST} ^(www.)?site2.com$
    RewriteRule ^(/)?$ site2folder/index.php

希望您可以看到重复的位置,因此如果您希望添加更多站点,您可以通过复制和粘贴数据并更改站点 URL 和子文件夹以匹配您希望添加的其他站点。

我希望这对你们中的一些人有所帮助。此外,如果您能看到这方面的问题,那将非常感激,因为我是 .htaccess 文件的新手,正如您可以想象的那样,我认为它有效,它一定是正确的。

于 2013-08-13T04:22:48.690 回答
0

我已经在使用 xampp 的专用 Windows 服务器中使用了它。使用 SSL 对我来说效果很好

#       mydoamin.com        starts  ############################

RewriteCond %{HTTP_HOST} ^(www.)?mydoamin.com$
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

#       mydoamin.com ends       ############################    


#    mydoamin.in        starts      ############################

    #RewriteCond %{HTTP_HOST} ^(www.)?mydoamin.in$
    #RewriteCond %{HTTPS} !on
    #RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

#       mydoamin.in     ends    ############################
于 2017-11-04T09:42:59.457 回答