Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 进入子页面时始终打开SPA站点的index.html';s网址_Ajax_.htaccess_Redirect_Single Page Application - Fatal编程技术网

Ajax 进入子页面时始终打开SPA站点的index.html';s网址

Ajax 进入子页面时始终打开SPA站点的index.html';s网址,ajax,.htaccess,redirect,single-page-application,Ajax,.htaccess,Redirect,Single Page Application,我有一个单页申请(SPA)网站。 所有内容都是通过Ajax加载的,例如:.load('page/subpage3.html')url的顶部永远不会改变(这是出于设计,我希望访问者总是从我写新闻的第一页开始浏览网站) 从菜单中,用户可以更改菜单下显示的网站内容。内容文件以xyz.html命名,因此它们在“我的记事本+”中显示为格式化,并位于子文件夹中。 它们的源代码中没有标题、样式和js文件,因为这些文件都附加到my index.html。 如果用户通过mysite.com域打开该站点,则一切正常

我有一个单页申请(SPA)网站。 所有内容都是通过Ajax加载的,例如:
.load('page/subpage3.html')
url的顶部永远不会改变(这是出于设计,我希望访问者总是从我写新闻的第一页开始浏览网站)

从菜单中,用户可以更改菜单下显示的网站内容。内容文件以xyz.html命名,因此它们在“我的记事本+”中显示为格式化,并位于子文件夹中。 它们的源代码中没有标题、样式和js文件,因为这些文件都附加到my index.html。 如果用户通过mysite.com域打开该站点,则一切正常

(大的)问题是谷歌用我的内容页面的完整路径来列出我的内容页面,就像它们是独立的、完整的工作页面一样。但是当用户打开这些链接时,只加载内容文件,没有任何图片、任何css或js文件、没有菜单,甚至字符出现错误,因为这些内容文件中没有指定任何内容

我的问题是,当点击内容页面的url时,我如何强制“总是打开index.html”呢。这些URL(我的子页面-内容文件)应该重定向到我的域名。就像我处理404错误一样

可能要解决这个问题,需要更改.htaccess文件(幸运的是,我可以完全访问该文件)。该站点正在Apache服务器上运行

我发现最好的是下一个代码,但我害怕使用/尝试它:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteRule . index.html [R=302,L]
因为我不知道它是否会破坏网站的任何功能(菜单、照片库等),我也不确定谷歌是否能够在这些更改后搜索并列出匹配项,或者它会因为重定向而忽略这些内容页?(或者,即使它可以工作,我的页面可能会得到较低的排名?)我想保持谷歌在整个网站上的搜索结果与现在一样。多谢各位

谷歌正在使用我的内容页面的完整路径列出我的内容页面

由于您在导航时没有更改url,可能google太聪明了,解析了您的脚本,无法提取子页面的完整路径。如果您希望用户从一开始就导航,那么可以使用
RewriteCond%{HTTP_REFERER}![NC]
每当用户单击来自其他地方(如搜索引擎)的深层链接时,都会重定向到根url(这不会影响您自己网站的ajax调用,但请确保没有直接的超链接,否则您需要使用other来确定它是否为XHR)

如果您不希望google在搜索结果中列出您的深层链接,请使用robots.txt限制爬虫程序,请参阅

我不知道它是否能破坏网站的任何功能(菜单、照片库等)

通常人们会将视图(html)和内容(图像、css等)分别放在不同的文件夹中,因此只需重写视图文件夹下的路径就不会影响其他内容

我不确定谷歌是否能够在这些更改后搜索并列出匹配项,还是会因为重定向而忽略这些内容页

重定向子页面当然会降低SEO性能,但是一些框架(例如Angular、React等)可以通过服务器端渲染提供解决方法。我不确定你正在使用什么工具来建立你的SPA,但是你可以先试试看google是否可以为你当前的SPA编制索引

谷歌正在使用我的内容页面的完整路径列出我的内容页面

由于您在导航时没有更改url,可能google太聪明了,解析了您的脚本,无法提取子页面的完整路径。如果您希望用户从一开始就导航,那么可以使用
RewriteCond%{HTTP_REFERER}![NC]
每当用户单击来自其他地方(如搜索引擎)的深层链接时,都会重定向到根url(这不会影响您自己网站的ajax调用,但请确保没有直接的超链接,否则您需要使用other来确定它是否为XHR)

如果您不希望google在搜索结果中列出您的深层链接,请使用robots.txt限制爬虫程序,请参阅

我不知道它是否能破坏网站的任何功能(菜单、照片库等)

通常人们会将视图(html)和内容(图像、css等)分别放在不同的文件夹中,因此只需重写视图文件夹下的路径就不会影响其他内容

我不确定谷歌是否能够在这些更改后搜索并列出匹配项,还是会因为重定向而忽略这些内容页

重定向子页面当然会降低SEO性能,但是一些框架(例如Angular、React等)可以通过服务器端渲染提供解决方法。我不确定你正在使用什么工具来建立你的SPA,但是你可以先试试看google是否可以为你当前的SPA编制索引