Apache mod-rewrite .htaccess子域名重定向问题

问题描述:

我很努力让我的.htaccess正确配置为特定子域名设置子域名重定向。我想重定向(而不是屏蔽)一个子域到一个特定的页面并多次重复这个配置。Apache mod-rewrite .htaccess子域名重定向问题

我目前使用的云DNS在谷歌Compute Engine的托管(用于托管在Godaddy的在子域的管理很简单)

before: 
# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

after: 
# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^sat.theteachertutors.com$ [NC] 
RewriteRule ^(.*)$ /private-sat-act-tutoring/$1 [L] 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

我尝试了上述的配置,但重定向不能正常工作。目标网址是:https://www.theteachertutors.com/private-sat-act-tutoring/ 任何指导/技巧将不胜感激。我搜索了其他的例子,但不能让这种配置在所有的工作,即:http://sat.theteachertutors.com

感谢

+0

哪个Apache 2.2或2.4版本?您是否尝试在重写过程中添加“R”标志?像这样: 'RewriteRule ^(。*)$/private-sat-act-tutoring/$ 1 [R,L]' – sys0dm1n

+0

嗨 - 我试过按以下方式,但仍然没有运气... – Yarin

你是接近的解决方案,改变重写规则如下:

RewriteRule ^(.*)$ https://www.theteachertutors.com/private-sat-act-tutoring/$1 [R=301,L] 

当您重定向到其他域/子域时,您必须使用完整的URL。此外,我使用R=301将重定向标记为永久重定向(默认规则指向另一个域使用302重定向)。

+0

Hi @ Alberto-martinez 。我提出了建议的更改,但https://sat.theteachertutors.com不起作用。任何其他想法? #BEGIN WordPress的 RewriteEngine叙述在 RewriteBase/ 的RewriteCond%{HTTP_HOST}^sat.theteachertutors.com $ [NC] 重写规则^(。*)$ https://www.theteachertutors.com /私有-SAT-ACT- 辅导/ $ 1 [R = 301,L] 重写规则^索引\ .PHP $! - [L] 的RewriteCond%{REQUEST_FILENAME} -f 的RewriteCond%{REQUEST_FILENAME} -D- 重写规则。 /index.php [L] #END WordPress – Yarin

+0

当您尝试访问子域名时会出现什么错误?此外,该子域指向www域的相同位置?我的意思是,我认为你之前已经将子域配置为指向.htaccess文件所在的目录,这似乎是主域的根目录,对吗? –

+0

嗨@ alberto-martinez,试图到达我得到的网址:无法访问此网站sat.theteachertutors.com花了很长时间回复。 基本上我希望子域转发到网站上的页面。 .htaccess文件位于主域的根目录中。看起来,当访问子域的网址(https://sat.theteachertutors.com/)时,请求并没有打到.htaccess文件。谷歌云DNS中是否需要额外的配置?谢谢! – Yarin