我的网站主机正在添加?PHPSESSID = fgh2h45 …到URL的末尾

我正在使用iPage.com主机。 为了在主机上使用PHP会话,我需要添加session_save_path('/home/users/web/.../cgi-bin/tmp'); 在每个页面的开始(在我的情况下,只有index.php,因为一切都先走低谷index.php)。

现在,他们自动将会话ID添加到每个请求的URL末尾,如下所示:website.com/movies/details/?PHPSESSID=4s54kjhdl …

我认为这是造成问题,可以影响谷歌索引和search引擎优化..

如何防止这一点?

您的“主机”不是造成这个问题,PHP是附加这个数据。 具体来说,PHP被配置为将PHPSESSID变量附加到URL以允许PHP跟踪会话。 可以在调用session_start之前使用ini_set更改相关设置,或者通过更新php.ini文件来更改永久的相关设置(虽然由于您承载了最后一个选项可能不存在)。 这是PHP中会话的可用运行时设置的列表 。

虽然您可以控制是否将值附加到URL的末尾,但需要跟踪会话。 或者,您可以将PHP配置为使用Cookie来跟踪会话,但要求Cookie跟踪会话可能会使拒绝Cookie的用户的应用程序中断。

简而言之,你可以控制会话ID使其更漂亮一些(通过将PHPSESSID重命名为更易于理解或使得值更加隐蔽),但是除非你想使用cookie来保持会话,否则你会被这个“垃圾“在您的网址上。 如果您使用cookie,则某些用户可能无法维护会话。

要启用基于cookie的会话处理,您可以执行以下操作

 // stop PHP from automatically embedding PHPSESSID on local URLs ini_set('session.use_trans_sid', false); 

要么

 // only use cookies (no url based sessions) ini_set('session.use_only_cookies', true); 

如果你自己不能修改php.ini,你可以这样做:

 ini_set('session.use_trans_sid',false); 

这将导致PHP使用基于Cookie的会话处理,而不会将会话ID附加到URL(这可能是一个安全风险)。

可以将其配置为使用基于Cookie的会话或完全转换会话。