php - .htaccess 包括 url 的旧部分
问题描述
我正在尝试为旧的 url 结构创建各种重定向到新的 url 结构。
旧网址结构:
index.php?page=protocols&id=1
新的网址结构:
/protocols/view/1
这是我的 .htaccess,但它没有正确重定向。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+index\.php\?page=protocols&id=([^&\s]+) [NC]
RewriteRule ^ \/protocols\/view\/%1 [R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
它正在重定向到/protocols/view/1?page=protocols&id=1
如何让它正确重定向?
解决方案
您需要QSD
在规则中使用“查询字符串丢弃”标志从新 URL 中删除附加字符串
改变
RewriteRule ^ \/protocols\/view\/%1 [R,L]
到
RewriteRule ^ \/protocols\/view\/%1 [R,QSD,L]
如果您的服务器版本不支持QSD
,那么只需在规则的目标 url 末尾放置一个空问号
RewriteRule ^ \/protocols\/view\/%1? [R,L]
推荐阅读
- c# - 所有 PUT 请求都被 CORS 策略阻止
- docker - 如何在使用 docker-compose 文件启动容器时使用 zsh (zshell) 运行容器
- avr - avr-gcc 如何将字符串放入程序中?
- javascript - 改变对象结构Javascript
- .net - 从没有命名空间的文件生成 dotnet-svcutil
- amazon-web-services - 如何在云端路由 S3、EC2、aws
- r - R:在数据框中的特定位置插入行
- cross-compiling - 使用 RISC-V 工具链交叉编译 V8
- mysql - MYSQL查询以获取每行具有不同子项的数组列表
- vba - 为什么 Powerpoint VBA 中不存在 .MergeShape 方法