我已经改变了我的地址并使它们变成了sef,但是我的一些链接很旧,其中一些是人们共享的,如果他们试图进入那里,他们会看到500个内部服务器错误,你可以想象,我需要将它们重定向到新的网址,我知道如何静态重定向,但不知道如何动态地
例如,我的旧链接是:mywebsite.com/profile/1,我的新链接是mywebsite.com/profile/1/johnny-walker
如果有人试图查看我的旧链接,我希望他们重定向到我的新链接
我的旧规则是:
RewriteRule ^profile/(.*)/?$ profile.php?id=$1 [L]
我的新规则是:
RewriteRule ^profile/([0-9]*)/(.*)/?$ profile.php?id=$1&slug=$2 [QSA,L]
谢谢
答案 0 :(得分:1)
那个名字的slu ,,它来自数据库,我用get exc来调用它,当用户注册时,它自动创建,我只是把它写成一个例子
我的意思是,在您拥有1
之前(身份证)。从那个id,你怎么得到slug?如果你可以从数据库中获取它,那么你需要保留这两个规则(稍作修改):
RewriteRule ^profile/([0-9]+)/([^/]+)/? profile.php?id=$1&slug=$2 [QSA,L]
RewriteRule ^profile/([0-9]+)/? profile.php?id=$1 [L]
然后在profile.php
中,您需要执行以下操作:
$_GET['slug']
值,如果是,则像正常一样将页面加载到页面$_GET['id']
(已清理)值并从数据库中检索slug 使用header()
功能,创建重定向:
header('HTTP/1.1 301 Moved Permanently');
header('Location: /profile/' . $id . '/' . $slug);
exit();
其中$id
是id,$slug
是数据库中的slug值。
如果有人请求http://mywebsite.com/profile/1
,那么重写规则会将其发送到 profile.php ,就像之前可以制作规范网址并进行重定向一样