我目前正在运行一个网站,我想让人们可以制作自己的网址。例如,这是我的网址: http://www.hikingsanfrancisco.com/hiker_community/hiker_public_profile.php?community_member_id=2
你知道,它只是被id命名,这是无趣的,也对SEO不好(这不重要)。
理想情况下,我希望我的网站成员也在URL中使用他们的名字。这通常是怎么做的?所以在我的情况下,它会是这样的: http://www.hikingsanfrancisco.com/alex-genadinik并隐藏了ID。
这可能吗?任何建议将不胜感激!
谢谢, 亚历克斯
答案 0 :(得分:3)
答案 1 :(得分:2)
Code Igniter是一个很棒的MVC框架,提供配置派生路由,可以轻松配置为通过公共控制器发送所有请求,其中内容可以从数据库中动态提取并呈现。
以下是基本路由规则的示例,该规则排除了对用户,学生和课程的请求,但将所有其他请求路由到公共内容控制器。
因此,如果您请求 http://mydomain.com/hiking-and-camping-info ,则会解析该网址,并徒步旅行和露营信息将在数据库中查找并删除相关内容。
路由配置:
$route['^(?!lessons|students|users|content).*'] = 'content';
然后内容控制器抓取网址片段并找到匹配的内容并加载它:
class Content extends Controller {
function __construct() {
parent::Controller();
$this->load->model('Content_model', 'content');
}
function index() {
$content_url = $this->uri->segment(1);
$data['content'] = $this->content->get_content_by_name($content_url);
$this->load->view('content', $data);
}
}
答案 2 :(得分:2)
通常,这是通过在具有mod_rewrite(大多数Linux服务器)的服务器上使用htaccess文件来实现的。一个例子可能是:
Options -Indexes
RewriteEngine On
RewriteRule ^([0-9a-zA-Z\-]+)$ $1.php
RewriteRule ^/(alex[\-]genadinik)$ /hiker_community/hiker_public_profile.php? community_member_name=$1
这意味着您的hiker_public_profile.php脚本需要接受“alex-genadinik”作为$ _GET变量“community_member_name”,然后通过名称而不是ID来查询数据库。
因此,您将获取上述代码,将其保存在名为“.htaccess”的文件中,然后将其上传到您网站的根目录。建议学习正则表达式。