.htaccess url 重写有效但重定向无效

.htaccess url rewriting is working but not the redirection

我正在 html/php 应用程序上的本地服务器上工作,我正在尝试使用 Apache url 重写模块但没​​有成功

应用程序存储在 ./Compta/index.php。我必须在 ./Compta/.htaccess

中创建一个 .htaccess 文件

我只想使用重写的 url,例如:http://localhost/Compta/Test/

而不是:http://localhost/Compta/index.php?page=test

并在用户尝试转到旧 url

时重定向用户

.htaccess 文件包含:

Options +FollowSymlinks

RewriteEngine on

RewriteRule ^([[:alnum:]]*)/$   /Compta/index.php?page= [L]

RewriteRule ^([[:alnum:]]*)$   /Compta/index.php?page= [L]

RewriteCond %{REQUEST_URI}  ^/index\.php$
RewriteCond %{QUERY_STRING} ^page=([[:alnum:]]*)$
RewriteRule ^(.*)$ http://localhost/Compta/%1/ [L,R=301]

当我转到 http://localhost/Compta/Test/ 时,以下行正在运行,我的代码在 div 中包含 test.php 的内容:

RewriteRule ^([[:alnum:]]*)/$   /Compta/index.php?page= [L]

当我转到 http://localhost/Compta/Test 时,以下行正在运行,但在 firefox 中 url 被重写为 http://localhost/Compta/index.php?page=Testhttp://localhost/Compta/Test2 则不会发生这种情况; url 没有被重写。

RewriteRule ^([[:alnum:]]*)$   /Compta/index.php?page= [L]

为了解决这个问题并重定向旧的 url 我添加了这些行:

RewriteCond %{REQUEST_URI}  ^/index\.php$
RewriteCond %{QUERY_STRING} ^page=([[:alnum:]]*)$
RewriteRule ^(.*)$ http://localhost/Compta/%1/ [L,R=301]

但这不起作用,当我转到 http://localhost/Compta/index.php?page=Test 时,url 没有被重写为 http://localhost/Compta/Test/

提前致谢

我没有找到 .htaccess 的解决方案,但我找到了 php 的解决方案,所以我在 php 文件的顶部添加了以下行:

        if(preg_match("/\/Compta\/index\.php\?page=([[:alnum:]]*)/",@$_SERVER['REQUEST_URI'],$page)&&!empty($page[1]))
        {
            $new_url = "/Compta/";
            switch (strtolower($page[1])) {
                case "test":
                    $new_url = $new_url."Test/";
                    break;
                case "test2":
                    $new_url = $new_url."Test2/";
                    break;
                default:break;
            }
            header("Status: 301 Moved Permanently", false, 301); 
            header("Location: ".$new_url);
            exit;
        }

我测试 url 是否以“/Compta/index.php?page= 开头并且是否有 "page" 的参数 然后我初始化包含新 url 的变量 切换我的参数内容我修改新的url 然后我重定向到我的新 url :)