可重写的URL重写(更改地址栏中的URL)

时间:2010-01-18 18:48:18

标签: apache url mod-rewrite url-rewriting friendly-url

之前我问过这个问题的补充:

Mod_rewrite invisibly: works when target is a file, not when it's a directory

现在我真的希望重写能够明显地发生,因为我已经切换了URL方案,虽然我希望旧链接可以工作,但我希望用户能够看到新的URL方案。

所以这是有效的

RewriteRule ^oldscheme/(.*)/?$  newscheme/$1

但地址栏中的网址仍为http://example.com/oldscheme/foo

进行可见重写的正确方法是什么,最好只使用mod_rewrite,而不是使用位置重定向或类似的东西?

2 个答案:

答案 0 :(得分:6)

由于我现在不能发表评论,我将在此处发布我对Ignacio评论的补充。

你实际上应该发布一个301(永久移动)重定向,因为你描述的是一个新的站点目录结构。所以你的RewriteRule应该是

RewriteRule ^oldscheme/(.*)/?$  newscheme/$1  [R=301]

答案 1 :(得分:4)

事实证明,添加“重定向”代码可以解决问题:

RewriteRule ^oldscheme/(.*)/?$  newscheme/$1  [R]

回想起来很明显,但希望这使得答案更容易搜索。 我在这个出色的“备忘单”上找到了它:

http://www.addedbytes.com/cheat-sheets/mod_rewrite-cheat-sheet/