5

我的问题专门针对下面的两个页面,但也更普遍地与使用没有 .htaccess 文件的干净 URL 的方法有关。

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

以上页面托管在 Amazon 的 S3 上,不允许使用 htaccess 文件。结果,我发现没有简单的方法来创建一个干净的 url 重写方案,该方案将所有请求发送到一个索引文件,然后使用 javascript 解释 URL 并加载正确的页面(使用 AJAX,或者,带有 decitectural 的案例,带有简单的 div 可见性切换)。

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

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

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

4

2 回答 2

0

这里有一些解决方案:没有 mod_rewrite 的漂亮 URL,没有 .htaccess

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

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

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

于 2013-02-21T11:27:11.617 回答
0

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

是的,如果有人链接到“/about/”或“/about.html”,它将中断。但是,如果您以奇怪的方式弄乱他们的链接,几乎任何网站都会崩溃。在链接到您自己的网站时,您必须保持警惕,因为您不会有任何重写规则来为您清理。但是你应该让自动化来做到这一点。

于 2013-08-01T04:00:38.517 回答