UrlSearchParams.get() 不适用于重写的网址

UrlSearchParams.get() doesn't work with rewritten urls

在我的网站上,我重写了所有 url。但是现在我已经开始使用 AJAX 进行投票功能(它是一个问答社区),但存在一些问题:

我将 new UrlSearchParams(window.location.search) 存储在常量中。然后我为此调用 .get() 方法。但是,由于 url 被重写,它无法识别查询。

const myParam = urlParams.get('id');

url 是 www.example.com/Questions/7www.example.com/pages/question.php?id=7

重写的

我的 .htaccess 文件如下所示:

RewriteEngine On    # Turn on the rewriting engine
Options -MultiViews
RewriteRule ^$ /pages/index.php [L]
RewriteRule    ^users/([0-9]+)$    pages/profile.php?id=   [NC]    # Handle users
RewriteRule    ^questions/([0-9]+)$    pages/question.php?id=   [NC]    # Handle questions
RewriteRule    ^([A-Za-z_]+)$       pages/.php                    [NC]    # Handle pages
RewriteRule    ^([A-Za-z_]+)$       pages/.html                    [NC]    # Handle pages

如何克服重写url时UrlSearchParams无法识别查询字符串数据这一事实?

您的重写规则所有内部重写,这意味着客户端代码只能看到原始 URL,即 /Questions/7

由于你的PHP在服务器端运行,可以看到重写的查询参数,你可以直接将它们作为JS变量注入,供你的客户端代码使用.

例如,将其放入您的 <head> 部分...

<script>
const ID_PARAM = <?= json_encode($_GET['id'] ?? null) ?>;
</script>