我一直在做一个使用推状态来管理站点导航的项目。该项目目前托管在Godaddy共享托管帐户上,我刚刚安装了一个带有HTTPD的Amazon服务器,并将文件传输到新服务器。例如,我必须添加一个.htaccess文件来帮助进行推状态导航,这样当我尝试使用http://example.com/page1时,它就不是404了。
当我尝试并访问godaddy服务器上的一个类似http://example.com/page1的页面时,它的行为就像它应该做的那样--它不尝试访问实际的页面,而是使用根页面并附加url路径/page1,而我的javascript负责可视化地显示页面1的内容。然而,在Amazon服务器上,它将带我浏览404页。我对.htaccess和push状态相当陌生,所以我必须从堆栈溢出中找到可以找到的内容,以帮助我完成这项工作(至少是在Godaddy上)。这是文件:
RewriteEngine On
RewriteRule ^([^/d]+)/?$ index.html?id=$1 [QSA]不确定我是否使用了正确的方法,也不知道为什么一个服务器会给出与另一个服务器不同的结果?
谢谢
编辑
因此,我已经将allowOveride设置为httpd.conf文件中的所有内容,如下所示:
<Directory "/">
AllowOverride All
</Directory>值得注意的是,这里我使用的是HTTPD而不是Apache2 --我不确定这是否会产生影响,但似乎是相同的过程。我还使用sudo service httpd restart重新启动了服务器,但结果仍然相同。我确实尝试了vhost选项,虽然我不记得我为它写了什么,但我让它应用于*/80,所以我相当肯定它写得正确。
还有其他的步骤,我可以采取进一步调试,并尝试引脚点,它到底是哪里出了问题?
发布于 2017-08-07 13:17:37
请检查您的(/etc/apache2/apache2.conf)配置apache2的设置如下:
<Directory "/">
AllowOverride None
</Directory>这将不允许服务器设置被.htaccess文件中的自定义设置覆盖。因此,如果您发现在您的apache2配置中有两个选项:
1)用AllowOverride All替换它,保存配置并重新启动apache2服务(应用服务器范围)
2)保持原样,并严格地将AllowOverride All添加到站点的vhost配置中(只适用于添加它的vhost )。
https://stackoverflow.com/questions/45544403
复制相似问题