.htaccess通过url重写变量无效

时间:2016-05-28 05:26:54

标签: php .htaccess

我的.htaccess文件中有一个脚本,我在其中尝试将网址从localhost/testing/user/index?username=example更改为localhost/testing/user/example

我这样做只是为了让我的网站看起来更“干净”,更容易浏览用户。

这是我目前的htaccess文件:

RewriteEngine On
RewriteRule ^user/([A-Za-z0-9-]+)$ user/index?username=$1;
RewriteRule ^user/$ user/index;

由于某种原因,这不希望对我有用,并且总是抛出 404 500 错误。

这是我用来获取通过URL传递的用户名的PHP代码。

if(isset($_GET['username']) && empty($_GET['username'])){
        header('location: ./');
    }

    if(empty($_GET['username']) && logged_in() == false){
        header('location: ./');
    } else if(empty($_GET['username']) && logged_in() == true || isset($_GET['username']) && $_GET['username'] === $username){
        $pageDisp = 1;
    } else if(!empty($_GET['username']) && $_GET['username'] !== $username){
        $pageDisp = 2;
}

在PHP中,如果$_GET['username']为空,则只会将用户设置为登录用户,但如果他们已登录,则会将用户重定向到404.

这是我的文件夹和脚本的布局:

.htaccess :/ testing / user /

用户index.php :/ testing / user /

主要index.php :/ testing /

这些文件的ALl位于我的XAMPP htdocs文件夹中。

感谢所有帮助 感谢

1 个答案:

答案 0 :(得分:1)

此代码适用于我

/testing/user/*

之后匹配任何内容

htaccess的

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^testing/users/([^/]*)$ /testing/users/?username=$1 [L]

/testing/users/(测试)

内的index.php
<?php echo $_GET['username'] ?>