Mod_rewrite - 将旧网址重定向到新网址

时间:2014-07-30 06:49:44

标签: .htaccess mod-rewrite redirect

我正在寻找将旧网址(例如aboutme.php)重定向到新网址(同一/about-me)的解决方案。

问题是:如果我转到example.com/aboutme.php,则用户不会被重定向到漂亮的网址(/about-me)。添加R = 301无效 - 它会使/about-me重定向到aboutme.php

这是我的.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^example\.com$
RewriteRule ^(.*) http://example.com/$1 [R=301,L]

# Specify search friendly URLs
RewriteRule ^about-me$ /aboutme.php [L]
RewriteRule ^portfolio$ /portfolio.php [L]
RewriteRule ^motion$ /motion.php [L]
RewriteRule ^contact$ /contact.php [L]
RewriteRule ^contact-thanks$ /contact_thanks.php [L]



</IfModule>

1 个答案:

答案 0 :(得分:2)

你必须朝另一个方向努力。

如果你想将aboutme.php重写为about-me

你应该使用

RewriteRule ^aboutme.php /about-me [R=301,L]

编辑:

这个地方/约会我必须在场。如果没有,您可以将此虚拟位置重定向到一个文件(例如rewrite.php),该文件从数据库或某些配置中获取实际文件。将以下规则放在htaccess规则的底部。

#don't rewrite the rewrite script
RewriteRule rewrite.php - [L]

#as example don't rewrite the image folder
RewriteRule ^images - [L]

#everything else that doesn't match a rule
RewriteRule ^(.*)$ rewrite.php?file=$1 [QSA,L]

之后,您可以使用$_GET['file']在rewrite.php中访问您请求的虚拟文件。

编辑:

你的rewrite.php看起来像这样:(这是最简单的方法。但你必须做一些错误检查等。)

<?php
$file = $_GET['file'];
$config = array(
    'about-me' => 'aboutme.php'
);
include($config[$file]);
?>