在php

时间:2016-04-15 12:07:03

标签: php .htaccess mod-rewrite url-rewriting user-friendly

我想在网址中传递用户名,就像facebook这样的其他社交网站一样。 网址应该是: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:

我希望网址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]

1 个答案:

答案 0 :(得分:1)

/.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是否已启用,并查看它是否生成500(当您在浏览器中访问www.mysite.com/index.php?u=username网址时,是否出现内部服务器错误。