也许我没有使用正确的技术来完成任务(如果你对我想要实现的目标有任何建议,那也是受欢迎的。)
我在http://some-app.herokuapp.com
的Heroku上有一个应用程序。我拥有域some-app.com
,它当前指向共享主机(我收到电子邮件@some-app.com
并在http://assets.some-app.com
中存储静态文件)。
为了将域重定向到Heroku上的应用,我在www.some-app.com
的共享主机上添加了一个新的CNAME,重定向到http://some-app.herokuapp.com
。这很有效。
现在,如果我导航到http://some-app.com
,我就不会被重定向(这是正常的,'裸'域名指向我的共享主机)。因此,在我的共享主机上,some-app.com/public_html/
内添加了以下index.php
文件:
<?php
header("Location: http://www.some-app.com");
效果很好,http://some-app.com
重定向到http://www.some-app.com
,然后通过CNAME正确打开http://some-app.herokuapp.com
,将www.some-app.com
保留在浏览器的地址栏中。
我遇到困难的是:尽管http://www.some-app.com/some-dir/
效果很好,但http://some-app.com/some-dir
不会重定向。相反,我得到了404。
如何在共享主机上保留我的电子邮件和静态文件的同时正确处理此问题(基于cpanel,如果有帮助的话)。
谢谢。
答案 0 :(得分:0)
经过大量的搜索,我发现了最优雅的方式。将.htaccess
文件放在public_html
的根目录下,其中包含以下内容:
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]