2012-10-04 96 views
1

我正在处理脚本,并且希望使链接如www.mysite.com/signup。此链接进行注册。 www.mysite.com/user/username和用户配置文件的链接。没有任何PHP扩展的链接。还当有人请求链接如www.mysite.com/signup.php应该重定向他www.mysite.com/signup如何在.htaccess中设置链接/配置文件/用户名

。我的.htaccess

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

这一点,所有的链接都工作正常,但是当我访问用户的个人资料,如 www.mystie.com/profile/username

我得到这个错误

对象不存在!

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

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

错误404

我的问题:什么代码添加到让该链接工作正常?

谢谢

回答

0

你想手动有关这两个指令“RewriteLog”和“RewriteLogLevel” mod_rewrite的在读。通过查看日志文件中的所有步骤,使用这些可以了解重写引擎处理请求的方法。

+0

thanks bu我需要更多帮助 –

1

你的路由请求盲目到PHP文件,这不会有什么与你问题:

RewriteEngine On 

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

现在,您需要一个规则添加到路由的配置文件,因为你不必为它的规则,您的个人资料链接行不通的。因此,一些看起来像:

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

更换profile.php与任何脚本生成的配置文件和username=与任何_GET PARAM脚本查找的用户名。

+0

我应该在profile.php中添加什么来获取用户名?我只有这个代码。$ username = @ $ _ SESSION ['username']; –

+0

我添加了你的代码,但不起作用。 –

+0

@KhaledBawazir因此,不是'$ username = @ $ _ SESSION ['username'];',您可以将它从GET变量'$ _GET ['username']' –

1

好吧,我解决了这个问题

非常感谢所有谁试图帮助我,尤其是乔恩·林:)

这是代码

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

我profile.php

$username = $_GET['username']; 

$info = fetchUserInfo($username); 

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

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

相关问题