我想在网址中传递用户名,就像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]
答案 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
网址时,是否出现内部服务器错误。