301重定向apache显示错误的url

301重定向apache显示错误的url,apache,.htaccess,url,mod-rewrite,Apache,.htaccess,Url,Mod Rewrite,事实证明,出于不同的原因,我不得不更改我的网站URL,旧的URL在Google中被编入索引,我想让你浏览一下,新的内容将与新的URL一起显示 我补充说: Redirect 301 /library/books/pitz-lower.php http://www.example.com/library/pitz-lower.php 但要从谷歌获取,浏览器中的url如下所示: http://www.example.com/library/pitz-lower.php?url=library/pit

事实证明,出于不同的原因,我不得不更改我的网站URL,旧的URL在Google中被编入索引,我想让你浏览一下,新的内容将与新的URL一起显示

我补充说:

Redirect 301 /library/books/pitz-lower.php http://www.example.com/library/pitz-lower.php
但要从谷歌获取,浏览器中的url如下所示:

http://www.example.com/library/pitz-lower.php?url=library/pitz-lower
htaccess

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On


RewriteBase /
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]




RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /library/library\.php\?url=([^\s]+) [NC]
RewriteRule ^ /library/%1.php? [L,R=301]
RewriteCond %{REQUEST_URI} !^/library/library\.php
RewriteRule ^library/(.+)\.php$ /library/library.php?url=$1 [L]

</IfModule>

#r301

Redirect 301 /library/books/pitz-lower.php http://www.example.com/library/pitz-lower.php

选项+FollowSymLinks
重新启动发动机
重写基/
RewriteCond%{THE_REQUEST}^GET.*index\.php[NC]
重写规则(.*)索引\.php/*(.*)/$1$2[R=301,NE,L]
RewriteCond%{THE_REQUEST}^[A-Z]{3,9}\/library/library\.php\?url=([^\s]+)[NC]
重写规则^/library/%1.php?[L,R=301]
重写cond%{REQUEST_URI}^/library/library\.php
重写规则^library/(.+)\.php$/library/library.php?url=$1[L]
#r301
重定向301/library/books/pitz-lower.phphttp://www.example.com/library/pitz-lower.php
我不明白为什么会这样,有人帮我?谢谢

有两个问题:

  • 混合使用
    mod_rewrite
    规则和
    mod_alias
    规则(即
    Redirect
    指令)是不好的,因为这两个模块在不同的时间运行
  • 在内部重写规则之前,请保留
    301
    重定向规则
  • 您的修改.htaccess应为:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^library/books/pitz-lower\.php$ /library/pitz-lower.php [L,NC,R=301]
    
    RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
    RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
    
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /library/library\.php\?url=([^\s]+) [NC]
    RewriteRule ^ /library/%1.php? [L,R=301]
    
    RewriteCond %{REQUEST_URI} !^/library/library\.php
    RewriteRule ^library/(.+)\.php$ /library/library.php?url=$1 [L,QSA]
    

    请记住在测试时清除浏览器缓存。

    您可以显示您的完整.htaccess吗?您所说的“但要从谷歌获得”是什么意思?我编辑了这篇文章,谢谢!对不起,我说的是英语。你很大,很大,它已经完全解决了,令人印象深刻。非常感谢!!