在 PHP 中创建包含用户名的用户友好 URL


create user friendly url containing username in php

我想像Facebook等其他社交网站一样在url中传递用户名。网址应如下所示:www.mysite.com/username

此外,如果用户名位置的值是目录名称,我希望能够访问目录。

前任。 www.mysite.com/downloads将进入downloads目录。

为此,我能做的是首先检查传递的值在哪里是有效的目录名称。如果是,则访问目录 else 检查用户是否存在,并且传递了用户名。

为此,我所做的是在根目录中创建了一个.htaccess文件,其中包含

RewriteEngine On
RewriteRule ^ index.php

并检查网址

// requested url
$request = $_SERVER['REQUEST_URI'];
// trim last / if available
$url = rtrim($request,'/');
// explode url and save in $ar array
$ar = explode('/',$url);
if(sizeof($ar) > 2)
{
  header('location : error/?error=1');
} else {
  $user = $ar[1];
}

上面的 if 语句是检查传递的参数是一个或多个。前任。 www.mysite.com/username/post将导致无效的网址

但是通过此代码,我无法访问我的目录www.mysite.com/downloads有什么简单的方法可以做到这一点。

编辑 2 :

我希望 url www.mysite.com/username username 作为变量传递,如果不是目录或文件index.php myProfile它作为访问的目录中作为$user = $_GET['u'];

更新.htaccess

# Do not remove this line or mod_rewrite rules and search engine friendly URLs will stop working
RewriteBase /
Options All -Indexes
# Timezone
SetEnv TZ Asia/Kolkata
ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /myProfile/index.php?u=$1 [L,QSA]

/.htaccess中尝试以下代码:

ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
DirectoryIndex index.php
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ myProfile/index.php?u=$1 [L,QSA]

如果您仍然得到404则通过将相同的垃圾(随机(文本放在/.htaccess顶部来验证您的.htaccess是否已启用,并查看当您在浏览器中访问 URL 时它是否生成 500(内部服务器(错误www.mysite.com/index.php?u=username