让我们想象一下我正在创建一个由AJAX驱动的Web应用程序。这意味着访问者只需要加载根目录(或/index.html
),然后就只能通过AJAX访问其他页面。这是必要的,因为index.html
将是母版页,而其他页面仅使用ajaxify和history.js加载到#content
中的index.html
。当有人直接进入浏览器访问诸如http://example.com/blah.html
之类的页面时,就会出现问题。这将导致页面不仅难看,而且会丢失index.html
上已经存在的一些重要信息。作为挑战的一部分,我不想拒绝用户对页面的访问。相反,我想将访问者重定向到index.html?url=somepage.html
,然后通过AJAX在somepage.html
上加载一次index.html
。由于脚本将页面加载到#content
中并还更新了URL,因此它们最终会在somepage.html
上出现,但现在有了一个有意义的页面。
这是我可以提出的一些想法(不是解决方案)。
redirect.js
文件,以检查该页面是否通过AJAX加载,然后有条件地将用户重定向到index.html?url=somepage.html
,但在应用程序包含太多页面的情况下(远远超过一千个)并持续增长),那么将会有太多的冗余(低效的代码)。同样,这是否可行?也许我必须构建一些脚本,该脚本可以读取应用程序上的每个文件,并在将文件内容写回之前包含所述脚本。这是一个很棒的解决方案!.js
文件,但该应用程序完全需要HTML格式(即用户只能访问.html
文件),并且只能通过AJAX使用PHP(即,出于灵活性的考虑,PHP可以在http://example.com/
上使用,但不能在http://app.example.com
上使用。用HTML编写应用程序的全部要点是能够使用Phonegap等平台作为编写方法非Web平台的通用代码,而通过浏览器访问时,相同的代码将部署在桌面上)。有没有一种方法可以在用户访问时在每个HTML页面上动态包含诸如redirect.js
之类的文件?index.html?url=somepage.html
,但是我该怎么做?我不知道。实际上,我需要执行此操作的确切代码。是否可以对URL进行适当的编码,以处理somepage.html
具有自己的查询参数(如.htaccess中的somepage.html?key=value&another_key=anothervalue
)的情况?请注意,使用.htaccess是可行的,因为如果用户是应用程序的本地Phonegap版本,则他们将无法直接输入URL。有人问了类似的问题here,但是问题和给出的答案都有点模棱两可,答案实际上并不能解决这里提出的问题。
正如我最终决定问之前所看到的那样,许多开发人员都在努力解决类似的问题。帮助我们。
答案 0 :(得分:0)
在起始页上为网站的所有路径添加重定向需要: 在 .htaccess 文件中:
RewriteEngine on
RewriteRule ^(.*)$ index.html [L]
浏览器字符串的完整路径保留 喜欢:
www.site.com/index.html =>加载index.html
www.site.com/somepage.html?key=value&another_key=anothervalue =>加载index.html
index.html
中的需要获取这样的文件名( php ):
$file_name=basename($_SERVER['SCRIPT_NAME']); // somepage.html
所有获取参数
$key=$_GET['key'] //value
在所有其他文件中,如果请求不是ajax / xmlhttprequest,则需要禁用内容 像这样:
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
exit;
}
//content if ajax only...