刷新网页的单个部分而不传递参数


Refresh a single part of a webpage without passing parameters

我正在用PHP开发一个Web应用程序,我想刷新应用程序的一个部分。我找到了一些帖子,解释了如何使用一些参数传递到 URL 样的以下内容中来做到这一点:

索引.php:

if ((isset($_GET['page'])) && (isset($authorizedPage[$_GET['page']]))) {
    require_once ($authorizedPage[$_GET['page']]);
} else {
    require_once ('./home.php');
}

因此,URL http://example.com/index.php?page=login 将显示我的登录页面,而无需重新加载我的索引.php...到目前为止还好。

但我的问题更多的是如何在不传递 URL 参数的情况下具有相同的行为。这意味着如果我想显示登录页面,我将有以下 URL http://example.com/login/

你能帮我吗?

为了将来供您参考,我将需要整合多语言网站的概念。

谢谢

我认为您想改变人们在您的网站上加载页面的方式,不是吗?这样人们就可以加载像 example.com/login/和 example.com/faq/这样的页面,而不是example.com?page=login和example.com?page=faq。

您应该在服务器根目录下的 .htaccess 文件中使用该mod_rewrite。有关文档,请参阅 http://httpd.apache.org/docs/current/mod/mod_rewrite.html。

我使用代码

<IfModule mod_rewrite.c>
    Options +FollowSymlinks -MultiViews
    RewriteEngine On
    RewriteRule ^([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?$ index.php?0=$1&1=$2&2=$3&3=$4&4=$5&5=$6&6=$7&7=$8&8=$9 [L,QSA]
</IfModule>

在我的 .htaccess 文件中将所有请求传递到我的 index.php 文件。url 中的每个文件夹都将是一个 GET 参数。

这是你问题的第一部分。当你只想重新加载网页的一部分时,请使用 JQuery 和 AJAX,就像 Marek 之前评论的那样。

我的代码中的RewriteRule行是一个很好的模式,当有人加载我的网站时,它将加载 index.php 文件。因此,如果有人加载 http://mydomain.com/folder1/folder2/file,则将加载文件index.php?0=folder1&1=folder2&3=file&4=&5=&6=&7=&8=&9=。然后在 PHP 中,您可以打开 $_GET 参数来加载正确的页面:

<?php
    switch ($_GET['0']) {
        case 'faq':
            {code}
            break;
        case 'login':
            {code}
            break;
        default:
            {code of you home page}
            break;
    }
?>
您可以将我的.htaccess

文件粘贴到空白记事本中,将其保存为".htaccess"并将其存储在服务器的根目录中。应该直接工作。