我目前维护一个网站的后端 php 代码,它允许我们的销售代表销售产品和服务。如果销售代表处于活动状态,他/她将获得一个“自定义”网站 URL,该 URL 基本上将该特定站点上的任何活动标记给该代表。销售仅在代表性网站上收集(我们这样做是为了“保护”我们的员工并确保他们觉得我们没有在开放的父网站上背后销售)。
例如:
www.site.com可能会突出显示所有可用的产品和服务,但不会让客户能够购买
www.site.com/SOMEREPCODE SOMEREPCODE 是特定代理的唯一标识符,提供相同的选项,但可以销售该产品。这些销售代表有数千名,因此有数千个链接指向相同的页面和内容。
最近,关于我们是否应该将网站也开放给前端销售存在很多争论。我们的行业非常具体,因此我们不太担心网络购物者的销售损失,但我确实相信它们存在。我们的一些前端开发人员在页面上有“noindex,nofollow”代码,我们被告知这是为了防止 Google 和其他人将网站“列入黑名单”,因为它试图让多个链接都指向相同的内容(想想 SOMEREPCODE 代表1000 名销售代表,页面几乎完全相同,但显示的姓名和联系电话相同)。
编辑 - 显示 htaccess 文件
#if file or directory do not exist, try as an repid
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-zA-Z-]+)$ index?Rep=$1 [QSA,NC,L]
上面的 htaccess 逻辑检查以确保输入的代码不是现有文件或目录。如果不是,则将 SOMEREPCODE 作为变量存储到 index?Rep=SOMEREPCODE。
在我的索引页面的顶部,我包含一个函数,用于检查Rep的值是否是有效的销售代表以及它们是否处于活动状态。如果无效或不活动,页面将被重定向到给出错误的登录页面。如果代表处于活动状态并且存在,则在设置适当的 SESSION 变量后页面继续加载。
索引包括
<?php
if(isset($_GET['Rep']) && $_GET['Rep'] != NULL) {
//DB connectors called
$sql = "SELECT * FROM reps WHERE repcode = ? AND status = 'Active' LIMIT 1";
$stmt = $db->prepare($sql);
$stmt->execute(array($_GET['Rep']));
while ($row = $stmt->fetch()) {
$_SESSION['repname'] = $row['repname'];
//collect other rep information
}
if( !isset($_SESSION['repname']) && empty($_SESSION['repname']) ) {
header("Location: unavailable");
exit;
} else {
$_SESSION['sales'] = "Y";
}
} elseif( !isset($_SESSION['sales']) && !isset($_GET['Rep']) ) {
$_SESSION['sales'] = "N";
}
?>
在这种情况下,索引页面根本不会改变,只有在 $_SESSION['open'] == 'Y' 存在的情况下“显示”的站点区域。
这是真的吗?有没有办法处理这种情况,让我们也可以打开网站进行网络销售?