之前我问过这个问题的补充:
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,而不是使用位置重定向或类似的东西?
答案 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/