PHP, JavaScript -检测屏幕宽度并从URL中删除$_GET值
PHP, JavaScript - Detect screen-width and remove the $_GET values from URL
我使用以下JavaScript来检测屏幕宽度,并通过条件语句将其作为模板文件中的常量来显示/不显示站点的部分。虽然这和我的问题没有太大关系,但以防万一……是的,我正在使用WordPress。此外,我已经在使用mobiledetect PHP库。
function getLayoutWidth() {
if (isset($_GET['width'])) {
define( "SCREEN_WIDTH", $_GET['width']);
} else {
echo "<script language='javascript'>'n";
echo " location.href='"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"
. "&width='" + screen.width;'n";
echo "</script>'n";
exit();
}
}
重要提示:
请不要建议媒体查询解决方案,因为这种技术不能解决我的问题。假设我的网站大小为2MB,它仍然会加载2MB的内容,然后通过使用CSS属性(如
display:none;
)在移动设备上隐藏1.5MB的内容。然而,我不希望模板部分自己加载,因此不需要隐藏任何东西。例如—@1200px我只想显示1个侧边栏。@1600px我想显示2个边栏,超过1600px我想显示3个边栏。我不希望像jQuery这样加载整个JavaScript库,因为
location.href='"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}". "&width='" + screen.width;
是我整个网站中唯一的JavaScript。其余的一切都是纯PHP, HTML和CSS为基础的。我甚至在前端模板中禁用了WordPress的jQuery
我的问题:
从SEO的角度来看,这是一个好的/正确的方法吗?如果不是,为什么?我不想加载的内容无论如何都不需要索引
我的URL显示为
example.com/my-product-category/my-product-name/?width=1440
如何删除/?width=1343
并仅显示example.com/my-product-category/my-product-name
部分?
请不要把建议作为答案。让有正确答案的人去做吧。请在评论区发表建议
从SEO的角度来看,这是一个好的/正确的方法吗?如果不是,为什么?我不想加载的内容是不需要加载的索引。
是的。这会给SEO带来问题。
考虑一些(设计糟糕的)网站有像www.example.com/index.php?page=homepage
这样的url,其中page参数实际上决定了页面的整个内容。因此,搜索引擎必须考虑每个唯一的URL是一个不同的页面,即使一个参数只影响页面的布局。
如果有人在不知情的情况下链接到包含宽度参数的页面,该特定URL将获得反向链接的信用,而不会给予其他具有其他相同内容的URL信用。
如果由于某些原因你不能解决这些问题-至少使用一些规范的url。
此外,该页可能返回一个HTTP 200状态码,表明该页是正确的。但是您随后决定使用Javascript将用户重定向到一个不同的页面。对于良好的SEO(以及一般的编程实践),您的网页必须提供准确的状态码。当你重定向用户时,你需要一个3XX状态码。
我的URL显示为example.com/my-product-category/my-product-name/?width=1440如何删除/?宽度=1343,显示刚好example.com/my-product-category/my-product-name部分?
您可以使用会话来存储请求之间的数据,但这仍然需要单独的$_GET
或$_POST
请求来让PHP第一次访问数据。这就留下了我上面描述的问题。
出于某种原因,您觉得有必要让PHP控制页面布局。这是一种非常糟糕的做法。PHP旨在解释传入的HTTP请求并为页面提供适当的内容。向PHP提供有关视口宽度的信息迫使PHP做出布局决定。PHP不应该被用来控制页面布局——那是CSS的工作。
如果你想要好的SEO和好的编程实践,让每个组件做它应该做的工作。
你不能。你不能在没有设置get参数的情况下从get参数获取宽度。然而,你可以将它存储在cookie中。
另外,我认为这听起来像是一件奇怪的事情,可能有更好的方法(如移动检测)。
- 谷歌应用脚本中的 UrlFetchApp.fetch 删除 url 参数
- JavaScript删除URL数组中字符之前的所有内容
- 通过javascript从浏览器历史记录中删除URL
- 删除 URL 哈希字符串中的前几个字符
- 带有 MVC asp.net 角度路由删除 URL 上的哈希 #
- 如何使用 JavaScript 删除 URL 的一部分
- 删除 URL 中的锚点
- 使用 jQuery 和 push State 从 URL 中删除 URL 参数
- 如何使用 jQuery 从 URL 中删除 URL 的一部分
- jQuery 验证插件 - 删除 URL 的“http://”要求
- JS/HTML5 从 url 中删除 url 参数
- 使用 jquery 更改 URL 参数或删除 URL 的某些部分
- 删除 URL 查询字符串中的加号 (+)
- 正在删除URL参数
- 删除URL开头的字符串
- 无法使用Chrome'删除URL;的历史API
- Jquery-清除或删除URL参数
- 删除url的搜索部分
- 我如何在Js中删除Url中的所有目标
- 使用JavaScript删除URL的参数