更改停放域的文档根目录?

Posted

技术标签:

【中文标题】更改停放域的文档根目录?【英文标题】:Change the document root of a parked domain? 【发布时间】:2011-08-03 03:37:01 【问题描述】:

我遇到了一个问题,即我的虚拟主机没有出现提供插件域。

我目前有一个指向我的名称服务器的域名。

我进入 cPanel 添加一个指向子目录的插件域,但 cPanel 中可用的只是将域停放在文档根目录“public_html/”。

所以来自停放域的流量会得到错误的内容,这显然不好。

我觉得这是不可能的,但我可以将停放的域文档根目录从“public_html/”更改为“public_html/sub-directory”吗?

或者也许我可以编辑 .htaccess 文件以将流量从停放的域重定向到子目录?

基本上我想要这个地址; www.parked-domain.com/

显示这个子目录的内容; www.first-domain.com/parked-directory

我希望这是可能的,否则我需要寻找一个新的网络主机。

问候,

院长。

【问题讨论】:

您还需要这个答案还是已经找到答案? 我经常问自己的一个好问题。我确实可以访问附加域,但不喜欢它们,因为他们需要不必要的用户和文件夹分配,并且将其视为可能的解决方案。我必须试一试这些答案,但我很想知道你是如何处理这个问题的 【参考方案1】:

虽然不受欢迎,但可以使用 mod_rewrite 动态设置您的停放域子主机。

这是一个 .htaccess 示例,用于通过 mod_rewrite 使用动态格式进行多主机托管,该格式需要 parked-domain-name = sub-folder-name,并涵盖您网站上被重定向或忽略的其他托管域。

# tell mod_rewrite to activate and give base for relative paths
  RewriteEngine on
  RewriteBase   /

# permanent redirect of unused parked domains so they do not try to resolve.
# only use this redirect if you want multiple names to point to another.
# otherwise, replace the rewrite rule with: RewriteRule . - [F,L]
  RewriteCond %HTTP_HOST   ^(www\.)?parked-domain1\.com$ [NC,OR]
  RewriteCond %HTTP_HOST   ^(www\.)?parked-domain2\.com$ [NC,OR]
  RewriteCond %HTTP_HOST   ^(www\.)?parked-domain3\.com$ [NC,OR]
  RewriteCond %HTTP_HOST   ^(www\.)?parked-domain4\.com$ [NC]
  RewriteRule ^(.*)$         http://main-site.com/$1 [L,R=301]

# if you have an active site in hosting root folder,
# then tell it not to look for a subfolder by skipping next rule
  RewriteCond %HTTP_HOST   ^(www\.)?main-site\.com [NC]
  RewriteRule ^(.*)$         - [S=1]

# the domain-name = sub-folder automation
# thus parked-domain5.com in /parked-domain5/
  RewriteCond %HTTP_HOST   ([^.]+)\.com
  RewriteCond %REQUEST_URI !^/%1
  RewriteRule ^(.*)$         %1/$1 [L]

# if you're hosting wordpress sites, this is a tweaked variant of the WP code.
# add the rest of this example only if:
#   1. main-site.com is a WP site
#   2. you remove .htaccess in subfolders
# if (1.) true, yet keeping subfolder .htaccess, uncomment next 2 lines:
# RewriteCond %HTTP_HOST !^(www\.)?main-site\.com [NC]
# RewriteRule ^(.*)$ - [S=1]
#### BEGIN WordPress, improved
# if this request is for "/" or has already been rewritten to WP 
  RewriteCond $1 ^(index\.php)?$ [OR]
# or if request is for image, css, or js file 
  RewriteCond $1 \.(gif|jpg|jpeg|png|css|js|ico)$ [NC,OR]
# or if URL resolves to existing file 
  RewriteCond %REQUEST_FILENAME -f [OR]
# or if URL resolves to existing directory 
  RewriteCond %REQUEST_FILENAME -d
# then skip the rewrite to WP 
  RewriteRule ^(.*)$ - [S=1]
# else rewrite the request to WP 
  RewriteRule . /index.php [L]
# END WordPress

【讨论】:

很好的答案格雷格,正如我在评论中指出的问题,我对此很感兴趣。你能告诉我们为什么它不受欢迎吗?我想这是因为我们绕过了一个内置功能。我已经理解了您的大部分答案,并期待在有时间时进一步消化它。谢谢。 本质上是文件级的DNS解析。您在最后一个阶段指定站点文件位置,然后通过一系列条件进行处理。简单的答案 - 这是一种缓慢的方式。如果被黑客入侵,或者托管公司使用拒绝 mod_rewrite 的 .htaccess 文件更改政策,那么您就会有一大群不满意的客户。 @Gerben 的 3 行解决方案是最简单的代码,执行与我的等效,但需要使用每个新域更新 .htacess,而我的是自动的,适合根托管和 WordPress。【参考方案2】:

将以下内容添加到您的 .htaccess 文件中:

RewriteRule ^parked-directory - [L]
RewriteCond %HTTP_HOST ^(www\.)?parked-domain\.com$ [NC]
RewriteRule ^(.*)$ parked-directory/$1 [L]

【讨论】:

这个答案似乎太短太甜了!谢谢你,就像格雷格的回答一样,我期待着在我有时间的时候自己尝试一下。也谢谢你,先生:) 更新:要使图像正常工作,请转到 wp-admin/network/site-settings.php?id=2 (无论您的 id 是什么)并更改 siteurl 以包含 parked-directory / 在末尾。将主页网址保留为 parked-domain.com【参考方案3】:

不要使用“停放域”,而是使用插件域 - 这里只是指向 public_html/sub-directory 的根目录,您希望将新的“停放”域指向该目录...

【讨论】:

不是一个反映完美场景的答案,而是阅读声明插件域不可用的问题。许多托管环境都是这样设置的,为子域和 0/∞ 停放域提供 0/∞,而为插件提供 0/0,并且可能也宣传停放和子域,这意味着多主机功能。使用插件的 cPanel 选项仍会显示,但无法正常工作,并且由于无法访问,在 httpd.conf 中设置虚拟主机的选项不可用。剩下的是 Gerben 和this mod_rewrite option。

以上是关于更改停放域的文档根目录?的主要内容,如果未能解决你的问题,请参考以下文章

如何在根域的子文件夹中运行 CakePHP 应用程序?

htaccess 多个域重定向到 https://www 和特定文档根目录

.htaccess 将域重定向到子目录而不更改 URL

Word TOC域的使用说明

使用.htaccess更改共享服务器中的文档根文件夹

更改 LAMP 文件夹的文档根目录