如何在PHP中为每个用户实现虚荣URL?我正在将我的网络应用程序的登录系统实现为Drax LLP登录系统的调整版本。
因此,每个用户都应该能够修改他的个人资料,这个资料最终会显示在他的虚荣网址上..就像xyz.com/user。
任何提示/想法?感谢..
答案 0 :(得分:0)
这相对简单:您有一个mod_rewrite
规则可将www.domain.com/username
的请求映射到www.domain.com/users/username
之类的内容。
然而,您需要知道禁止成为用户名的内容,因为我认为您将拥有其他顶级网页,例如www.domain.com/about
或www.domain.com/terms
。因此,您不希望人们将about
和terms
注册为用户名。
答案 1 :(得分:0)
以下是相关文件的示例:
<强> htaccess的:强>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
<强>的index.php 强>
<?php
function getWebPath() {
$location = "";
// Read the relative URL into an array
if(isset($_SERVER['HTTP_X_REWRITE_URL'])) { // IIS Rewrite
$location = $_SERVER['HTTP_X_REWRITE_URL'];
} elseif(isset($_SERVER['REQUEST_URI'])) { // Apache
$location = $_SERVER['REQUEST_URI'];
} elseif(isset($_SERVER['REDIRECT_URL'])) { // Apache mod_rewrite (breaks on CGI)
$location = $_SERVER['REDIRECT_URL'];
} elseif(isset($_SERVER['ORIG_PATH_INFO'])) { // IIS + CGI
$location = $_SERVER['ORIG_PATH_INFO'];
}
return $location;
}
$location = getWebPath();
print_r($location);
上面的函数应该成为前端控制器类中的一个方法。您只需要从$ location中减去基本路径,这样您就可以使用虚拟路径了。然后你可以做任何你想做的事 - 例如只需拆分'/'然后按路径工作,将每个余数传递给下一个控制器,具体取决于URI。您还可以使用正则表达式编写更复杂的路由规则(Django和其他一些框架都可以这样做。)
例如: /简档/ hardik988
将传递给负责'profiles'的控制器,然后决定如何处理路径的其余部分。它可能会查找用户名并显示相应的模板。