我正在尝试将旧的网址(看起来像product_detail.php?cat_id = 9& id = 351)重写为新的重写网址。
但是当访问者访问我的网站时,他们可以访问旧网址和新网址。 如何将所有访问者重定向到新URL?
在示例中: mydomain.com/product_detail.php?cat_id=9&id=351 => mydomain.com/product/product-name-1.html
这是我的.htaccess内容。
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ index.php
RewriteRule ^phong-trung-bay.html$ showroom.php
RewriteRule ^san-pham.html$ product.php
RewriteRule ^danh-sach-cong-trinh.html$ project_cat.php
RewriteRule ^cac-cong-trinh-(.*)-([0-9]*\.?[0-9]).html$ project.php?id=$2
RewriteRule ^cong-trinh-(.*)-([0-9]*\.?[0-9]).html$ project_detail.php?id=$2
</IfModule>
问题是访问者可以访问旧网址和新网址。所以每个内容我会有2个URL。
答案 0 :(得分:0)
由于您使用php函数创建目标url文件名,因此无法使用.htaccess
重写引擎。相反,你必须通过PHP重定向:
创建product_detail.php
,或者如果它仍然存在,请将此代码放在开头:
$newUrl = '/product/' . createSlugFunction();
header("Location: ".$newUrl,TRUE,301);
exit();
虽然createSlugFunction()
表示创建slug的函数。
答案 1 :(得分:0)
这是我的php标题
<? ob_start(); ?>
<!DOCTYPE html>
<html lang="vi">
<?
include("../init.php");
include_once("../includes/set_language.php");
include("../includes/library.php");
include ('../includes/image.php');
if($_GET["id"]<>"") {
$a_project=get_tblfield($_GET["id"],"projects","project_id");
$a_category=get_tblfield($a_project[0]["category_id"],"project_cat","category_id");
}
$newUrl = 'http://localhost/acmvn/vn/cong-trinh-' . LamDepURL($a_project[0]["title"]).'-'.$a_project[0]["project_id"].'.html';
header("Location: ".$newUrl,TRUE,301);
die();
?>
<?
session_start();
?>
这是.htaccess的内容
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ index.php
RewriteRule ^phong-trung-bay.html$ showroom.php
RewriteRule ^san-pham.html$ product.php
RewriteRule ^danh-sach-cong-trinh.html$ project_cat.php
RewriteRule ^cac-cong-trinh-(.*)-([0-9]*\.?[0-9]).html$ project.php?id=$2
RewriteRule ^cong-trinh-(.*)-([0-9]*\.?[0-9]).html$ project_detail.php?id=$2
</IfModule>
如果我通过旧网址访问
http://localhost/acmvn/vn/project_detail.php?id=270
这将重写为
http://localhost/acmvn/vn/project-name-something-270.html
但代码
$newUrl = 'http://localhost/acmvn/vn/cong-trinh-' . LamDepURL($a_project[0]["title"]).'-'.$a_project[0]["project_id"].'.html';
header("Location: ".$newUrl,TRUE,301);
die();
会永远处理并让我陷入困境。 有人可以帮忙吗?