【问题标题】:htaccess rewrite rules old.com/folder > new.com, w/ existing htaccess rulehtaccess 重写规则 old.com/folder > new.com,带有现有的 htaccess 规则
【发布时间】:2013-05-23 14:23:32
【问题描述】:

迷路了。 我正在尝试重写旧站点 (old.com/folder) 的 URL 使用 .htaccess 到网站的更新版本 (new.com),

old.com/folder 应该变成 new.com 的位置


论坛指出 .htaccess 将以这种方式编写以用于标准 URL 更改

RewriteEngine On
RewriteCond %{HTTP_HOST} old.com$ [NC]
RewriteRule ^folder/(.*)$ http://www.new.com/$1 [R=301,L]

但当前的 .htaccess 文件有以下重写以清理 URL:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [PT,L]
RewriteRule ^(.+) /folder/index.php

.htaccess 文件应该是什么样子才能保持重写的结构(无 index.php)并重定向到新站点?

例如。 old.com/folder/a/a >>>>> new.com/a/a

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    您的组合 .htaccess 应该是这样的:

    Options +FollowSymLinks -MultiViews
    # Turn mod_rewrite on
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{HTTP_HOST} old\.com$ [NC]
    RewriteRule ^folder/(.*)$ http://www.new.com/$1 [R=302,NC,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^(.+) - [PT,L]
    
    RewriteRule . /folder/index.php [L]
    

    一旦您确认它工作正常,请将R=302 替换为R=301。在测试你的 mod_rewrite 规则时避免使用R=301(永久重定向)。

    【讨论】:

    • 我把 .htaccess 文件改出来上传了;重定向仍然不起作用,旧 URL 也没有改变。
    • 清除浏览器缓存并重启浏览器。还告诉我哪个 URL 不起作用。还要确保上面的代码在 DOCUMENT_ROOT 中,我假设的文件夹是DOCUMENT_ROOT/folder
    • 所以 .htaccess 文件应该在 old.com 下而不是 old.com/folder 下? (old.com 和 new.com 是实际网站的替身)
    • 是上面的答案假定.htaccess 将直接在old.com/ 的DOCUMENT_ROOT 下
    • .htaccess 文件在正确的位置。清除缓存并重新启动我所在的浏览器,但没有任何改变。
    猜你喜欢
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多