apache - 带有可变查询参数的 htaccess 重定向
问题描述
你能帮我完成这项工作吗?
我正在尝试重定向
/search.php?id=5GHU&distance=50&sort=title
或者
/search.php?id=5GHU
或者
/search.php?id=5GHU&distance=50
至
/search/?query_string_values
即无论是一个查询字符串参数还是许多他们都应该去那里
这是我尝试过的。
RewriteBase /
RewriteCond %{QUERY_STRING} (?:^|&)id=([^&]+)
RewriteRule ^search\.php$ /search/%1? [L,R=permanent]
谢谢
解决方案
对不起,我对你的问题感到困惑,我现在明白了。所以...
像这样修改您的 .htaccess:
RewriteEngine On
RewriteRule "^/search.php$" "/search/" [L,R=301,QSA]
简而言之,它将获取查询字符串(以 开头的 /search.php 之后的内容?
)并将其附加到“/search/”。这是由 QSA 标志对 RewriteRule 完成的。无论您有多少参数,它都会附加所有参数。
见https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_qsa
所以
/search.php?a=1&b=2 --> /search/?a=1&b=2
/search.php?c=3 --> /search/?c=3
由于/search/?a=1&b=2
没有指定要使用的页面,它将使用 DirectoryIndex 在您的配置中定义的默认页面。我更喜欢明确指定页面,但没有它也可以工作。
推荐阅读
- c - strtok() 如果字符串的第一部分为 0,则忽略 0 值
- javascript - 这个 findRoute 函数在 Eloquent Javascript 3rd Edition 的第 7 章中是如何工作的?
- r - 基于闪亮服务器的开放版本从闪亮应用下载文件时防止超时
- php - Azure表存储php分页不起作用
- compilation - 是否有可用的确定性架构模拟器?
- docker - 将数据从 Elastic search 导出到本地 Docker 容器
- decorator - Hyperledger Composer 建模语言中的装饰器
- json - 将 json 文件导入 Angular 4.x TypeScript 应用程序
- bash - 期望脚本在单独调用时起作用,但不是作为盐状态
- mysql - 如何将文本插入 mysql SELECT 语句并以句子形式显示输出?