0

在我的站点中,用户个人资料有 urls mysite.com/user/username。我真正想要做的 url 应该是 mysite.com/username。我已经完成了将这些代码行添加到 htaccess 文件中

RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?uname=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?uname=$1

现在我可以从 mysite.com/username 联系用户。但错误是,现在 404 文件不起作用。如果我输入像 myste.com/dasdfsf 这样不存在的 url,它不会得到 404 文档,因为它正在查看所有数字和字母(以查找用户名)并给我一个我为无效用户名创建的空白页面。如果该用户不存在,我希望它显示 404 页面。

4

2 回答 2

2

为什么显示无效用户名的空白页?改为显示您的 404 页面。

于 2012-06-07T17:43:19.680 回答
2

重定向:

RewriteRule ^user/([a-zA-Z0-9_-]+)$ http://example.com/$1 [R=301,L]
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?uname=$1 [L] #use the L option to stop processing
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?uname=$1 [L]

要显示 404,您需要设置 404 页面并添加逻辑user.php来阅读它。

<?php
    if(!userExist()){
        header('Status: 404 Not Found');
        echo file_get_contents('404.php');
        exit;//do this if there is code below that assumes this is a valid user
    }
?>
于 2012-06-07T17:48:49.843 回答