我正在寻找将旧网址(例如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>
答案 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]);
?>