当前位置:首页 > 技术 > 正文内容

阿里云虚拟主机绑定多个网站及隐藏URL中的子目录名

Lavfun2年前 (2022-06-23)技术2157

202206231431491218319.jpeg

首页,购买虚拟主机时,要选择Apache主机,而不要选择Ngnix主机,否则就无法绑定多个网站!另外,虚拟主机一般只能放一个MYSQL数据库,这里说的多网站是指静态网站或支持SQLITE数据库的网站,如Z-Blog、PbootCMS等建站系统。购买域名、备案、解析域名、绑定域名,这些操作就不说了,大家自行网上搜索教程来学习。

  • 在虚拟主机的根目录下创建子目录(如web),然后将网站文件FTP上传到web目录下;

  • 解析域名,并在虚拟主机后台绑定域名;

  • 在网站根目录下创建文件:.htaccess,然后在里面粘贴如下内容来将域名绑定到目录(注意根据自己的情况修改下列域名和子目录名):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?域名$
RewriteCond %{REQUEST_URI} !^/子目录名/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /子目录名/$1
RewriteCond %{HTTP_HOST} ^(www.)?域名$
RewriteRule ^(/)?$ /子目录名/index.php [L]
  • 如果是多个网站,上述代码可复制重复添加,注意修改里面域名和子目录名即可绑定多个网站;

  • 设置好以后保存,就可以用域名访问你的网站了,但是有个问题就是域名后面始终带个“目录名”,如:http://www.域名/目录名/,如果放在普通服务器里则无此问题,而在虚拟空间里这个问题就一直存在,如果是旧站迁移过来,则原来的网站链接访问时会出错,导致搜索引擎需要重新收录或增加跳出率,所以这个问题必须想办法解决;

  • 如果是Z-Blog程序,则可以按此方法解决:https://bbs.zblogcn.com/thread-105336.html,用“沉冰浮水”的方法就可以完美解决;而如果是Discuz或其它程序,则可能要想办法隐藏后面这个目录名,方法如下:

  • 打开网站子目录,在子目录下创建文件:.htaccess,然后在里面粘贴如下内容来隐藏子目录(注意根据自己的情况修改下列域名和子目录名):

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+目录名/([^\s]+) [NC]
RewriteRule ^ %1 [R=301,L]

# 如果相关内容链接打开出错时可去掉下两行
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?!^目录名/)^(.*)$ /目录名/$1 [L,NC]
  • 做完上面这步后,再去测试发现链接里的“目录名”已经被隐藏并可正常访问了,至此虚拟主机绑定域名到子目录并隐藏URL中的子目录名就搞定了!但是,新的问题出现了:前台用户无法登录,但可以登录后台,然后前台也会自动登录,对于只发布信息,不要求用户发帖的站点,只能这样用了;如果需要用户发帖,那就不能使用这个规则,搜索了很长时间无解,最好还是建议购买服务器来使用。

  • 如果要使用301跳转,可以在虚拟主机管理后台绑定域名后,在“基础环境设置”——“301重定向”里选择添加;也可以使用代码,将下列代码放入根目录的.htaccess文件中:

# 301重定向:
RewriteCond %{HTTP_HOST} ^访问域名 [NC] 
RewriteRule ^(.*)$ http://目标域名/$1 [L,R=301]

  • 还有一些人使用下面代码来绑定目录,亲测可用,但不能隐藏子目录名,对绑定目录要求不高的情况下可以使用,根目录下.htaccess内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^二级域名$ [NC]
RewriteCond %{REQUEST_URI} !^/目录名
RewriteRule ^(.*)$ /目录名/$1 [L]
</IfModule>
  • 子目录下.htaccess内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^二级域名$ [NC]
RewriteRule (.*) http://二级域名/$1 [L,R=301]
</IfModule>

本站原创,转载请注明出处,否则勿转!

扫描二维码推送至手机访问。

版权声明:本文由 声光视趣 - lavfun.com 发布,如需转载请注明出处。

本文链接:https://www.lavfun.com/technical-forum/66.html

分享给朋友:

相关文章

Z-blog在阿里云虚拟主机上无法使用STMP发邮件问题解决办法

Z-blog在阿里云虚拟主机上无法使用STMP发邮件问题解决办法

首先,确保阿里云虚拟主机管理后台的“PHP函数fsockopen设置”是开启状态:然后前往找到文件:/zb_users/theme/tpure/plugin/phpmailer/smtp.php,将下列代码注释掉:$this->smt...