php - 我的虚拟主机正在将 ?PHPSESSID=fgh2h45... 添加到 URL 的末尾

标签 php apache session hosting

我正在使用 iPage.com 主机。为了在他们的主机中使用 PHP session ,我需要在每个页面的开头添加 session_save_path('/home/users/web/.../cgi-bin/tmp');(在我的案例只有 index.php,因为一切都首先通过 index.php)。

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

我认为这会导致问题,并会影响 google 索引和 SEO..

如何防止这种情况?

最佳答案

问题不是您的“主机”引起的,PHP 正在附加此数据。具体来说,PHP 配置为将 PHPSESSID 变量附加到 URL 以允许 PHP 跟踪 session 。可以在调用 session_start 之前使用 ini_set 更改相关设置,或者更永久地通过更新 php.ini 文件(尽管由于您是托管的,最后一个选项可能是出去)。 This is a list of the available runtime settings for sessions in PHP .

虽然您可以控制该值是否附加到您的 URL 的末尾,但它是跟踪 session 所必需的。或者,您可以将 PHP 配置为使用 cookie 来跟踪 session ,但是对于拒绝 cookie 的用户来说,要求 cookie 来跟踪 session 可能会破坏您的应用程序。

简而言之,您可以控制 session ID 使其更漂亮(通过将 PHPSESSID 重命名为更易于接受的名称或使值不那么神秘),但除非您想使用 cookie 来维护 session ,否则您将陷入困境您网址上的这个“垃圾”。如果您使用 cookie,一些用户可能无法维持 session 。

要启用基于 cookie 的 session 处理,您可以执行以下任一操作:

// 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 - 我的虚拟主机正在将 ?PHPSESSID=fgh2h45... 添加到 URL 的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3191235/

相关文章:

php - 从 PHP 调用 MySQL 存储过程

php - 使用 html 按钮更改网站语言

php - shell_exec 不返回与 sudoed 命令行相同的结果

apache - 我可以为所有 VirtualHost 使用一个 SSLCertificateFile,而不是为每个 VirtualHost 创建一个 SSLCertificateFile 吗?

python - 使用 Apache 设置 Django 时出现数据库错误 - DatabaseError : DPI-1047

php - htaccess 阻止访问 .php 并且只允许使用 RewriteRule

php session.use_trans_sid

session - Jsch 0.1.54 session.connect() throws com.jcraft.jsch.JSchException : Session. connect : java. io.IOException: End of IO Stream Read

php - Google Search Console API - SearchAnalytics 500 错误

java - 如何在单元测试执行之前实例化 session ,以便服务类中的 Autowiring session 正确创建 bean?