我遇到了以下问题:
我们的会员希望以http://www.example.com/membername
的形式直接从我们的主域名中获取个性化网站。我正在以两种方式看待可能的解决方案,但两者都不理想(将在下面解释)。
?Member=
在此方法中,我只创建一个自定义URL并将信息存储在成员的数据库配置文件中。例如:如果我希望我的“自定义”网址为jm4,供消费者访问我的网站,则必须输入http://www.example.com?Member=jm4
。
当然,该网站会$_GET['Member']
查找会员信息,从索引页面将主要数据存储在会话中,然后重定向到主页。消费者不再在URL中看到成员名称,而是看到www.example.com的所有页面名称,就好像他们只是访问了父域一样(但每个成员的页面都有自定义信息)。
虽然这种方法有效但却存在以下问题:
/jm4
那么简单
输入的任何错误
将导致通配符?Members=
页面错误。此外,这种方法保持不变
那个特定成员的信息
在会议中(这是必要的
在页面上浏览页面
特定成员域)和
阻止某人简单地打字
http://www.example.com?Member=name2
来
访问另一个站点而不清除
他们的会话或关闭浏览器。/membername
虽然是首选方法,但目前我们知道如何创建的唯一方法是在子文件夹中手动生成索引文件,重定向到主索引,然后允许使用者查看该成员的个人网站。
例如,如果我访问www.example.com/jm4
,我就会点击包含 index.php 的/jm4
文件夹。在此文件中只包含:
<?php
session_start();
ob_start();
$_SESSION['AgentNumber'] = "779562";
header("Location: ../index.php");
exit;
?>
主索引通过以下方式识别:
<?php
session_start();
ob_start();
if ($_SESSION['MemberNumber'] == NULL) {
header("Location:ac/");
exit;
}
$conn = mysql_connect("localhost", "USER", "PW");
mysql_select_db("DB",$conn);
$sql = "SELECT * FROM table WHERE MemberNumber = $_SESSION[MemberNumber]";
$result = mysql_query($sql, $conn) or die(mysql_error());
while ($newArray = mysql_fetch_array($result)) {
$_SESSION['MemberName'] = $newArray['MemberName'];
$_SESSION['MemberPhone'] = $newArray['MemberPhone'];
$_SESSION['MemberMobile'] = $newArray['MemberMobile'];
$_SESSION['MemberFax'] = $newArray['MemberFax'];
$_SESSION['MemberEmail'] = $newArray['MemberEmail'];
$_SESSION['MemberAddress'] = $newArray['MemberAddress'];
$_SESSION['MemberCity'] = $newArray['MemberCity'];
$_SESSION['MemberState'] = $newArray['MemberState'];
$_SESSION['MemberZip'] = $newArray['MemberZip'];
$_SESSION['MemberAltName'] = $newArray['MemberAltName'];
}
mysql_close($conn);
header("Location: home/");
exit;
?>
对于会员来说,我们当然更愿意使用第二种方法“轻松”,但仍然遇到以下问题:
有没有人遇到过类似的问题?如果是这样,你是如何解决它的?根据我上面的详细信息,您会推荐什么?任何建议都表示赞赏。
此外 - 使用子域(membername.example.com
)不是首选,因为我们当前的SSL不允许使用通配符。
编辑1 - 现有.HTACCESS文件 我在网站上现有的.htaccess文件如下所示:
ErrorDocument 404 /404.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
RewriteRule ^(.*)$ /?Member=$1 [L]
答案 0 :(得分:3)
您可以通过在根目录中的.htaccess
添加一些行来执行首选方法:
答案 1 :(得分:2)
如果您使用的是apache,那么您可以使用mod_rewrite将http://host/membername
之类的网址更改为http://host/memberpage.php?name=membername
。
答案 2 :(得分:2)
您可以在.htaccess文件中使用它作为第二种方法。它会将http://yoursite.com/membername重写为http://yoursite.com/?Member=membername
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /?Member=$1 [L]
</IfModule>