html - (s)html 文件的 .htaccess 重写规则,获取参数丢失
问题描述
因为几个小时我正在尝试创建一个重写规则,而不是一个 php 文件,而应该是一个对 shtml 文件的重写。文件名被改写了,但我总是丢失get参数(调用时没有传递给shtml文件)。如果我对 php 文件做同样的事情,它就可以工作。
不工作:
RewriteRule ^search/(.*)$ LookAt.shtml?q=$1 [L,NC]
是否有效:
RewriteRule ^search/(.*)$ LookAt.php?q=$1 [L,NC]
我已经尝试过 QSA 等。不知何故没有任何效果(谷歌为 .php 返回了很多结果,对于 .(s)html 我没有发现任何有用的东西),我希望有人能给我一个提示,我已经为此发疯了问题....
谢谢!
解决方案
我使用:(
console.log(window.location.search);
调试问题)
那就是问题所在。您不能使用客户端JavaScript 从重写的 URL 读取查询字符串server-side。给定/search/foo
客户端请求中没有查询字符串的请求。
客户端 JavaScript 只能在浏览器中看到请求的 URL。例如:
// Outputs "https://example.com/search/foo"
console.log(location.href);
这同样适用于.php
文件。但是您可能是在检查$_GET['q']
还是$_SERVER['QUERY_STRING']
在服务器端脚本中?
由于您使用的是.shtml
我假设您将使用服务器端包含 (SSI) 来访问查询字符串。例如:
// Outputs "q=foo"
console.log('<!--#echo var="QUERY_STRING" -->');
如果您只使用客户端 JS,那么您可能只是直接解析请求的 URL 以提取搜索短语。例如。/search/foo
. (在这种情况下,无需重写请求以附加查询字符串。只需重写LookAt.shtml
就足够了。)
推荐阅读
- filter - 在枢轴过滤器中选择当前月份
- python - BeautifulSoup data-reactid Python
- r - 如何以管道运算符格式编写此 R 表达式?
- python - Paramiko 下载、处理和重新上传相同的文件
- string - 如何在 ReactJS 中用自定义 JSX 组件替换一些文本模板?
- python - 字节数组上的 iter(callable, sentinel) 形式
- c# - 设置带有子目录的 ASP Net Core 应用程序
- java - 是否可以将数组的某些值复制到另一个数组但具有相同的引用?
- html - Bootstrap 4嵌套折叠样式问题
- javascript - 使用选择选项反应搜索过滤器