Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重写URL而不影响旧的搜索引擎结果_Php_Apache_.htaccess_Url Rewriting - Fatal编程技术网

Php 重写URL而不影响旧的搜索引擎结果

Php 重写URL而不影响旧的搜索引擎结果,php,apache,.htaccess,url-rewriting,Php,Apache,.htaccess,Url Rewriting,我经营一个游戏网站已经5年多了,现在我正在从头开始重新设计。我当前的网站使用丑陋的URL(?gameid=123),我想美化它(games/123)。 问题是我的网站被谷歌编入了索引,我不想破坏旧的URL,我不知道怎么做 同时,如果我能在不破坏我在搜索结果中的位置的情况下更新谷歌上显示的网址,那就太好了。 因此,目前,如果我查找“Bunny Invision GPStudios”,最重要的结果就是我的网站: www.gpstudios.com/playgame.php?gameid=29 如果我

我经营一个游戏网站已经5年多了,现在我正在从头开始重新设计。我当前的网站使用丑陋的URL(?gameid=123),我想美化它(games/123)。 问题是我的网站被谷歌编入了索引,我不想破坏旧的URL,我不知道怎么做

同时,如果我能在不破坏我在搜索结果中的位置的情况下更新谷歌上显示的网址,那就太好了。 因此,目前,如果我查找“Bunny Invision GPStudios”,最重要的结果就是我的网站: www.gpstudios.com/playgame.php?gameid=29 如果我能将其更新为www.gpstudios.com/games/29或www.gpstudios.com/games/bunny-invision-2,那就太好了

我突袭了谷歌,似乎很少有人关心这个问题。也许我的措辞不太好。
请提供帮助。

您可以在root
中执行此操作。htaccess

RewriteEngine on 

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/+playgame\.php\?gameid=([^\s&]+) [NC]
RewriteRule ^ /games/%1? [R=302,L,NE]

# internal forward from pretty URL to actual one
RewriteRule ^games/(\d+)/?$ playgame.php?gameid=$1 [L,QSA,NC]
当测试工作正常时,将
[R=302]
更改为
[R=301]

可以使用
www.gpstudios.com/games/29/bunny invision
www.gpstudios.com/games/29/等链接进行SEO
。 为此,只需更改不带
?$
的行:

RewriteRule ^games/(\d+)/ playgame.php?gameid=$1 [L,QSA,NC]
您必须使用301(永久)重定向从旧URL到新URL。这叫做URL重写,是搜索引擎优化行业的常见问题。每个URL都应该“重写”到新页面

在项目根目录下使用.htaccess文件:

Redirect /old/url /new/url [L,R=301]
您可以使用regexp简化作业:

Redirect /games/(\d+) playgame.php?gameid=$1 [L,R=301]

此处的详细信息:

首先,确保仍可访问旧URL。接下来,不提供页面服务,只需发送一个带有301(或其他适当的)响应的标题(在:)和重定向到新URL即可


您可以阅读PHP:s
header
函数:

完美答案!谢谢:)我一直在想,我更希望我的URL是“游戏/兔子入侵”,而不是游戏/29/兔子入侵。如果没有一些PHP/mysql,我不知道该怎么做。另外,我的搜索引擎结果会在漂亮的URL实现后更新以显示新的URL吗?你可以用同样的方法重定向,但不能从.htaccess重定向。在这种情况下,我想我可能会用PHP完成所有内部URL修饰。或者这是个坏主意?另外,当我将现有搜索引擎结果重定向到漂亮的URL时,它们会更新吗?(谷歌最重要的是)是的,没错。这是个不错的主意,但在我看来,没有什么帮助。如果你愿意,你可以把号码放在末尾<代码>游戏/兔子入侵/29或
游戏/兔子入侵-29