如何在.htaccess中设置链接/个人资料/用户名

时间:2012-10-04 14:00:35

标签: php .htaccess

我正在制作一个脚本,我想制作链接,例如www.mysite.com/signup。这个链接进行注册。 www.mysite.com/user/username以及此用户个人资料的链接。没有任何PHP扩展的链接。当有人要求链接时,例如www.mysite.com/signup.php应该将他重定向到www.mysite.com/signup

.my .htaccess

RewriteEngine On
RewriteRule ^/?([a-z]+)$ $1.php [L]

有了这个,所有链接都工作正常,但是当我访问用户的配置文件时,如 www.mystie.com/profile/username

我收到此错误

找不到对象!

在此服务器上找不到请求的URL。如果您手动输入了URL,请检查拼写,然后重试。

如果您认为这是服务器错误,请与网站管理员联系。

错误404

我的问题:要添加哪些代码以使该链接正常工作?

谢谢

4 个答案:

答案 0 :(得分:1)

您的路由会盲目地请求php文件,这与您的问题无关:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^/?([a-z]+)$ $1.php [L]

现在您需要添加规则来路由配置文件,因为您没有规则,您的配置文件链接无法正常工作。所以看起来像:

RewriteRule ^/?profile/(.*)$ /profile.php?username=$1 [L]

用任何脚本替换profile.php生成配置文件,用脚本查找用户名的_GET参数替换username=

答案 1 :(得分:1)

好的我解决了这个问题

非常感谢所有试图帮助我的人,特别是Jon Lin:)

这是代码

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^profile/(.*)$ profile.php?username=$1 [L] 

我的个人资料.php

$username = $_GET['username'];

$info = fetchUserInfo($username);

echo $info['username'];
echo $info['userid'];

希望也帮助一些有同样问题的人

答案 2 :(得分:0)

您想在mod_rewrite手册中阅读有关两个指令'RewriteLog'和'RewriteLogLevel'的内容。使用这些,您可以通过查看日志文件中的所有步骤来了解重写引擎如何处理请求。

答案 3 :(得分:0)

也许更好的方法是编写一个简单的php路由器,如以下链接中所述:

http://www.kratedesign.com/blog/2010/03/29/php-router-and-clean-urls/