【问题标题】:301 redirect apache shows wrong url301重定向apache显示错误的url
【发布时间】:2017-01-26 23:40:09
【问题描述】:

事实证明,由于不同的原因不得不更改我的网站网址,旧网址已在 Google 中编入索引,我希望您浏览它们,新内容与新网址一起显示。

我添加了这个:

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

但是从google获取,浏览器中的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

我不明白为什么会这样,有人帮帮我吗?谢谢!!

【问题讨论】:

  • 你能展示你的完整 .htaccess 吗?
  • “但要从 google 获取”是什么意思?
  • 我编辑帖子,谢谢!对不起我的英语

标签: apache .htaccess url mod-rewrite


【解决方案1】:

有两个问题:

  1. 混合使用mod_rewrite 规则和mod_alias 规则(即Redirect 指令)并不好,因为这两个模块在不同时间运行。
  2. 在内部重写之前保留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]

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

【讨论】:

  • 你很大,很大,已经彻底解决了,印象深刻。非常感谢!!
猜你喜欢
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
  • 2016-12-07
  • 1970-01-01
  • 2019-01-19
  • 2017-04-05
  • 1970-01-01
  • 2013-05-26
相关资源
最近更新 更多