5

我正在运行一个支持 HTML4 哈希和 HTML5 pushstate() 的启用 AJAX 的站点。

我刚刚迁移到 AWS EC2 实例(运行 apache 的 Linux 服务器),两个站点都运行良好。

我遇到的唯一问题是当我刷新 HTML4 哈希页面时显示正确的页面。

但是,当我刷新像http://www.datingjapan.co/conversations这样的 HTML5 页面时,我收到以下错误消息:

在此处输入图像描述

看来 apache 正试图进入文件夹“convertations”,而不是只调用站点“index.php”,然后使用 jquery 加载正确的页面。

任何人都可以建议这里可能是什么问题。我假设它是一个 httpd.conf 设置。

谢谢

4

2 回答 2

5

如果您尝试将index.php文件用作某种类型的引导程序,您可能想在.htaccess文件中尝试此操作:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^(www\.).+$ [NC]
    RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

基本上,这会将所有请求从非 www 重定向到 www,然后如果它不是文件或目录,它会将请求转发到index.php文件。

于 2012-12-25T21:55:09.573 回答
3

我自己没用过pushState(),但如果浏览器/conversations向 www.datingjapan.co 发送请求,那么 Apache 确实会在其文档根目录中查找名为“conversations”的文件或文件夹,除非你告诉它做一些不同的事情.

如果您希望 www.datingjapan.co 上的所有 URL 都由一个 index.php 文件处理,那么您可以在 Apache 设置文件中使用AliasMatch指令:

AliasMatch ^.*$ /index.php

认为这将导致所有 URL 都由 index.php 处理。(虽然我对 Apache 配置不是很感兴趣,所以我可能是错的。)

于 2012-12-25T21:39:56.227 回答