仅使用.htaccess为主要域和子域配置.htaccess

时间:2019-03-12 10:28:23

标签: apache .htaccess redirect proxy subdomain

我在基于Apache 2.4和

的多个子域的www.main.com上托管

www.sub1.main.com, www.sub2.main.com, ....

文件夹结构为

/home/main/.htaccess + project files and subdomain folders like:
/home/public-html/main/sub1.main.com/.htaccess
/home/public-html/main/sub1/.htaccess + project1 files
/home/public-html/main/sub2/.htaccess + project2 files

子域是基于不同技术的单独项目

基于AngularJS的/ home / main /网站,具有标准的angular .httaccess配置:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^(.*) /index.html [NC,L]

我想在sub.main.com中拥有另一个.htaccsess配置,如下所示:

RewriteEngine On
RewriteRule ^$ http://127.0.0.1:3000/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^api$ http://127.0.0.1:3000/$1 [P,L]

哪个代理应该将我的Apache流量重定向到我的nodejs服务器。

在某些时候,我的子域重定向不起作用。仅在主文件夹中有效。

所以我有3个问题:

  1. 是否应为.httaccess主域中的所有域配置所有规则? (由于潜在的网址冲突,并不是很不错)

  2. 是否可以将主要的.htaccess配置为仅允许其他子域使用其自己的.httaccess

  3. .httaccess子域的正确位置在哪里?

此处-/home/public-html/main/sub1.main.com/.htaccess 或者在这里-/home/public-html/main/sub1/.htaccess + project1文件

这是共享主机,只能访问apache配置。 我只能使用.httaccess方式,我没有更改虚拟主机的权限,因此请仅提供.httaccess解决方案。

以上两个代码段均有效,也不会重定向任何节点,而只能重定向到主文件夹/主文件夹,而不重定向子域。

每个子域需要特殊的.htaccess来托管多个项目

1 个答案:

答案 0 :(得分:0)

我为想要在共享主机上使用nodeJS的任何人找到了解决方案:

在以下位置进入/ home / main / www / .htaccess:

RewriteEngine on

RewriteOptions inherit
RewriteCond %{HTTP_HOST} ^main\.org$ [OR]
RewriteCond %{HTTP_HOST} ^www\.main\.org$
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/.+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^/?$ "http\:\/\/angular\.main\.org\/" [R=301,L]

RewriteBase /
RewriteCond %{REQUEST_URI} !^/node/
# Rewrites all URLS node.main to node server
RewriteCond %{HTTP_HOST} ^(www\.)?node.main\.
# Redirect to node server
RewriteRule ^(.*)$ http://127.0.0.1:3000/$1 [P, L]

在/ home / main / www / angular内部放入.htaccess,如:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^(.*) /index.html [NC,L]

,我们在节点文件夹中不需要任何.htaccess 我希望它对遇到相同问题的人有所帮助。