.htaccess:在.php内部重写.htm网址,但也将.php网址重定向到.htm

时间:2011-06-02 17:35:10

标签: apache .htaccess mod-rewrite

我有一个php网站。对于所有的页面链接,我使用foo.htm,并在内部用.htaccess将其重写为foo.php:

RewriteRule ^(.*)\.htm$ $1.php [NC,L]

这很好用 - 但是,它仍然允许你使用foo.php网址。我想301将foo.php重定向到foo.htm以防止任何旧的foo.php搜索引擎结果悬空并在内部将foo.htm url重写为foo.php

如果不创建循环,我无法弄清楚如何做到这一点。

2 个答案:

答案 0 :(得分:0)

RewriteRule ^(.*)\.htm$ $1.php [NC,L]
RewriteRule ^(.*)\.php$ $1.htm [NC,R]

选项L停止重写引擎,防止循环。

答案 1 :(得分:0)

将此代码放入.htaccess文件中:

Options +FollowSymlinks -MultiViews
RewriteEngine on

RewriteCond %{THE_REQUEST} ^GET\s(.+)\.php [NC]
RewriteRule ^ %1.htm [R=301,L]

RewriteRule ^(.*)\.htm$ /$1.php [L,NC]