在php中的SEO友好和干净的URL

时间:2013-03-25 23:25:04

标签: php database wordpress url url-rewriting

其实我的问题不能直接理解,但我认为你可以从下面的例子中理解

这里在wordpress中没有任何html或php页面或文件夹名称小工具在服务器中不可用但是当用户访问此链接时打开为html

  

我创建了自己的网站,在那里他们访问了那里的个人资料   www.website.com/profile.php但我想给每个用户提供链接   www.website.com/userid喜欢facebook


所以我想知道如何打开这些网址我开发整个网站,但我只想更新/profile.php到/用户名

感谢阅读并回答

4 个答案:

答案 0 :(得分:1)

启用mod_rewrite,apache => htaccess的

答案 1 :(得分:1)

在这个链接上我写了一篇关于这个问题的谷歌搜索,我找到了解决方案 Click here for see this tutorial then read following steps

0)问题

我试着问你这样:

我想打开像facebook profile www.facebook.com/kaila.piyush

这样的页面

它从url获取id并将其解析为profile.php文件并从数据库返回featch数据并将用户显示给他的个人资料

通常当我们开发任何网站时它的链接看起来像 www.website.com/profile.php?id=username example.com/weblog/index.php?y=2000&m=11&d=23&id=5678

现在我们更新新风格而不是重写我们使用www.website.com/username或example.com/weblog/2000/11/23/5678作为永久链接

http://example.com/profile/userid (get a profile by the ID) 
http://example.com/profile/username (get a profile by the username) 
http://example.com/myprofile (get the profile of the currently logged-in user)

1).htaccess

在根文件夹中创建.htaccess文件或更新现有文件:

Options +FollowSymLinks
# Turn on the RewriteEngine
RewriteEngine On
#  Rules
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php

这是做什么的?

如果请求是针对真实目录或文件(服务器上存在的那个),则不提供index.php,否则每个url都会重定向到index.php。

2)index.php

现在,我们想知道要触发的操作,因此我们需要阅读URL:

在index.php中:

// index.php    

// This is necessary when index.php is not in the root folder, but in some subfolder...
// We compare $requestURL and $scriptName to remove the inappropriate values
$requestURI = explode(‘/’, $_SERVER[‘REQUEST_URI’]);
$scriptName = explode(‘/’,$_SERVER[‘SCRIPT_NAME’]);

for ($i= 0; $i < sizeof($scriptName); $i++)
{
    if ($requestURI[$i] == $scriptName[$i])
    {
        unset($requestURI[$i]);
    }
}

$command = array_values($requestURI);
With the url http://example.com/profile/19837, $command would contain :

$command = array(
    [0] => 'profile',
    [1] => 19837,
    [2] => ,
)
Now, we have to dispatch the URLs. We add this in the index.php :

// index.php

require_once("profile.php"); // We need this file
switch($command[0])
{
    case ‘profile’ :
        // We run the profile function from the profile.php file.
        profile($command([1]);
        break;
    case ‘myprofile’ :
        // We run the myProfile function from the profile.php file.
        myProfile();
        break;
    default:
        // Wrong page ! You could also redirect to your custom 404 page.
        echo "404 Error : wrong page.";
        break;
}

2)profile.php

现在在profile.php文件中,我们应该有这样的东西:

// profile.php

function profile($chars)
{
    // We check if $chars is an Integer (ie. an ID) or a String (ie. a potential username)

    if (is_int($chars)) {
        $id = $chars;
        // Do the SQL to get the $user from his ID
        // ........
    } else {
        $username = mysqli_real_escape_string($char);
        // Do the SQL to get the $user from his username
        // ...........
    }

    // Render your view with the $user variable
    // .........
}

function myProfile()
{
    // Get the currently logged-in user ID from the session :
    $id = ....

    // Run the above function :
    profile($id);
}

答案 2 :(得分:0)

如果您想要一个WordPress网站,每个用户都有自己的子网站,您应该查看BuddyPress。这是一个WordPress社交网络插件。

答案 3 :(得分:0)

我想你问的是干净的网址?

您不想这样做http://mysite.com/profile.php?id=foo

但你想要http://mysite.com/foo

你传递用户名的地方,在这种情况下'foo'到某个脚本,所以你可以用它做点什么。

@godesign告诉您需要在.htaccess文件中启用mod_rewrite。你可以用它做很多有趣的事情,你应该阅读它和正则表达式。

这是我的.htaccess文件的样子(为示例修改):

RewriteEngine On
RewriteRule ^([a-z]+)$ profile.php?id=$1 [L]

这与正则表达式 - ^([a-z]+)$位匹配 - 并将其放入$1变量。

了解更多:

http://wettone.com/code/clean-urls

http://corz.org/serv/tricks/htaccess2.php

http://www.branded3.com/blogs/htaccess-mod_rewrite-ultimate-guide/