没有.htaccess文件的干净网址的单页面应用程序?

时间:2012-11-24 23:13:53

标签: .htaccess url-rewriting amazon-s3 router clean-urls

我的问题专门针对以下两个页面,但更一般地涉及使用没有.htaccess文件的干净URL的方法。

http://www.decitectural.com/http://www.decitectural.com/about/

以上页面托管在亚马逊的S3上,不允许使用htaccess文件。因此,我发现没有简单的方法来创建一个干净的url重写方案,该方案将所有请求发送到索引文件,而索引文件又使用javascript解释URL并加载正确的页面(使用AJAX,或者,如同具有decitectural的情况,具有简单的div可见性切换)。

为了避免这个问题,我通常会编辑amazon S3存储桶属性,并将索引页面和错误页面都设置为index.html文件。在这种情况下,即使请求了无效路径(例如/ about /),也会提供index.html文件。在大多数情况下,这是一个有效的解决方案...也就是说,直到我意识到我还在使用index.html页面获得了404,这将阻止Google对其进行索引。

这使我找到了解决这个问题的替代方案。目前,作为临时修复,我实际上是在服务器上创建/ about /目录,其中包含index.html文件的副本。这有效,但显然不是解决问题的真正方法。

如果您在S3或任何无法使用.htaccess文件的情况下设置干净的URL路由方案,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

以下是一些解决方案:Pretty URLs without mod_rewrite, without .htaccess

另外,我猜你可以运行一个脚本来从一个数组或数据库动态创建文件,以便它生成你的所有URL:

  • /index.html
  • /about/index.html
  • /contact/index.html
  • ...

并在每次编辑,cron或手动运行时挂钩脚本。在性能方面不是最好但是嘿,它应该有用。

答案 1 :(得分:0)

我认为你的做法是错误的。 S3使您可以完全控制站点的页面结构。如果您希望链接为“/ about”,只需上传名为“about”的文件,即可完成。 (设置标题以便浏览器知道它的HTML。)

是的,如果有人链接到“/ about /”或“/about.html”,它就会中断。但是,如果你以奇怪的方式搞乱他们的链接,几乎任何网站都会破坏。在链接到您自己的网站时,您必须保持警惕,因为您没有任何重写规则可以为您清理。但你应该有自动化。