2

我想在 url 中传递用户名,就像 facebook 等其他社交网站一样。网址应该是这样的:www.mysite.com/username

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

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

为此,我可以做的是首先检查传递的值是有效目录名称的位置。如果是,则访问目录,否则检查用户是否存在并传递了用户名。

为此,我所做的是,.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传递到它访问的目录中usernameindex.phpmyProfile$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]
4

1 回答 1

2

试试这个代码/.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并查看它是否在您访问www.mysite.com/index.php?u=username浏览器中的 URL 时生成 500(内部服务器)错误。

于 2016-04-17T07:41:42.217 回答