使用 mod 重写隐藏来自 google 的变量
我注意到谷歌使用 URL 中的变量对我的页面进行索引,而其他页面则没有这些变量。这些其他页面中没有变量,并且在没有 php 扩展名的情况下索引良好。
例如:
mydomain.com/page.php?name=flinstones
我的 htaccess 将其重写为:
mydomain.com/flinstones
但它在谷歌搜索和谷歌分析中仍然显示为前者。
有没有办法强制它只显示/浏览漂亮的网址?
这是我的代码..第一部分有效,但重定向无效。 我该如何让它发挥作用?
RewriteEngine On
RewriteRule ^([^/\.]+)/?$ page.php?name=$1 [L]
RewriteRule ^page.php?name=([^/\.]+)/?$ /$1 [R=301,L]
谢谢,
I noticed that google indexes my pages with the variables in the URL and others pages without them. These other pages do not have variables in them and are indexed fine without the php extension.
For example:
mydomain.com/page.php?name=flinstones
my htaccess rewrites that to:
mydomain.com/flinstones
But it still shows as the former in google search and google analytics.
Is there a way to force it to show/browse only the pretty urls?
Here's my code.. first part works but the redirect doesn't.
How do I make it work?
RewriteEngine On
RewriteRule ^([^/\.]+)/?$ page.php?name=$1 [L]
RewriteRule ^page.php?name=([^/\.]+)/?$ /$1 [R=301,L]
Thanks,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,您可以告诉 Google 规范链接是什么页。
Yes, you can tell Google what the canonical link is for a page.
是的,永远不要让谷歌看到丑陋的链接!在你的 php/html 代码中,始终只使用它的良好形式。那么谷歌就没有机会了:-)
Yes, never make google see the ugly link! In your php/html code, always use only the nice form of it. Then google stands no chance :-)
Mod重写的意思是:
如果出现带有此表单“xxxxx”的页面请求
按照“yyyyy”进行管理
并向请求者告知任何信息。
因此,在您的情况下,谷歌认为这两个网址都是有效的(并且重复的),哎呀!
对于您的情况,请使用
301 重定向
,这意味着:“xxxxx”不是有效请求(或已弃用),请请求者(google 或任何人)使用 insetead 'yyyyy'。那么'xxxxx'很快就会被忘记。另一方面,
mod 重写
相反的情况是正确的:mydomain.com/flinstones
重写为:
mydomain.com/page.php?name=flinstones
遵守 SEO 规则并让 php 管理请求。
Mod rewrite means:
If a page request occurs with this form 'xxxxx'
Manage it as it was 'yyyyy'
And do inform anything to the requester.
So in your case google thinks that both urls are valid (and duplicated), ouch!
For your case use a
301 redirect
that means: 'xxxxx' is not a valid request (or deprecated), please requester (google or anyone) use insetead 'yyyyy'. then 'xxxxx' will be forgotten soon.On the other hand, it is correct to
mod rewrite
your opposite case:mydomain.com/flinstones
rewrited to:
mydomain.com/page.php?name=flinstones
to honour SEO rules and to let php manage the request.