1

我正在编写一个脚本,我想制作诸如 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

3 回答 3

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 参数。

于 2012-10-04T19:35:55.583 回答
1

好的,我解决了问题

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

这是代码

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'];

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

于 2012-10-06T00:52:58.850 回答
0

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

于 2012-10-04T14:06:21.337 回答