如何使用.htaccess重定向网页,以便将旧链接重定向到新链接?
我有一个旧格式的链接如何使用.htaccess重定向网页,以便将旧链接重定向到新链接?,.htaccess,mod-rewrite,redirect,.htaccess,Mod Rewrite,Redirect,我有一个旧格式的链接 www.mydomain.com/dir/this_my_page.html 我的新剧本需要转发给 www.mydomain.com/newdir/this+my+page.htm 我将在.htaccess文件中编辑什么,以便实现这一点?有人能帮我修改htaccess的功能吗?我建议使用前端控制器。这意味着您可以使用htaccess文件将所有请求重写为单个文件(index.php),然后使用该文件中的代码发送到相应的页面。您可以从旧url重定向到新url,如果是
www.mydomain.com/dir/this_my_page.html
我的新剧本需要转发给
www.mydomain.com/newdir/this+my+page.htm
我将在.htaccess文件中编辑什么,以便实现这一点?有人能帮我修改htaccess的功能吗?我建议使用前端控制器。这意味着您可以使用htaccess文件将所有请求重写为单个文件(index.php),然后使用该文件中的代码发送到相应的页面。您可以从旧url重定向到新url,如果是新url,则发送到相应的页面控制器 这比为您可能拥有的每种页面类型编写庞大的重写规则要容易得多。通过这种方式,所有的工作都是用你的网站已经运行的同一种语言完成的,因此你不必学习和维护一个可怕的巨大的.htaccess文件,不管怎么说,这都是一场噩梦 以下是将所有非静态请求重定向到index.php的.htaccess文件的示例:
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
然后在index.php中,您需要执行所有解释请求的逻辑,并确定如何处理请求。我个人喜欢使用Zend Framework MVC:
但是,如果您已经有了不同格式的URL,那么转换它可能需要做大量的工作。如果您只是更改URL的一部分,例如目录,您可以使用
RedirectMatch ^/oldPath/(.*) http://www.example.com/newPath/$1
(可能适用于相对URL,未测试…)
如果文档名称也发生了变化,那么您必须找出一种算法来进行翻译,或者为每个要重定向的url设置一个重定向。根据文件的数量,你可以做一些非魔法和完全不酷的事情
RedirectMatch ^/dir/first_document.html /newdir/first+document.html
RedirectMatch ^/dir/second_document.html /newdir/second+document.html
RedirectMatch ^/dir/third_document.html /newdir/third+document.html
某些Regexp向导可能可以为所有要转换为加号的下划线添加Regexp,但我将保留该选项;)
如果这太多,您实际上不需要重写,您也可以选择404错误文档,例如
ErrorDocument 404 /redirect.php (or .jsp, .asp, .whatever)
然后使用该脚本查找原始请求url,并使用您最喜欢的脚本/编程语言将旧url转换为新url(检查请求标题以确定原始url的名称。在PHP中,将其放在错误文档中(不要忘记在生产版本中删除)并在请求中找到原始URL头。然后使用新URL发送响应