在不知道页面标题的情况下重写URL

时间:2014-01-08 01:33:14

标签: .htaccess rewrite

我目前在我的网站上有这样的链接:

http://www.domain.com/locations/locationProfile.php?locationID=22

我希望,出于搜索引擎优化的目的,我可以将其更改为:

http://www.domain.com/locations/southern-maryland

“Southern Maryland”目前从一个mysql数据库中取出作为位置ID 22的位置名称。当我的网站结构目前使用吸引力较低的第一个版本时,是否甚至可以将其插入到URL中?

1 个答案:

答案 0 :(得分:0)

您无法使用htaccess为您执行此操作。可以使用您可以在服务器配置中定义的RewriteMap(无法在htaccess文件中定义它),但如果您只是在locationProfile.php脚本中执行此操作,则会更容易。

您可以使用REQUEST_URI值检测是否使用查询字符串发出请求:

if ( $_SERVER['REQUEST_URI'] == '/locations/locationProfile.php' &&
     isset($_GET['locationID'])) {
    // go into DB and extract the location name then redirect
    header('Location: /locations/' . $location-name);
}

然后在文档根目录中的htaccess文件中:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^locations/([^/]+)$ /locations/locationProfile.php?locationName=$1 [L,QSA]

最后,让你的php脚本查找locationName参数,并根据它而不是ID来服务正确的页面。