apache - 如何使用多个 url 变量?
问题描述
我将像那些一样转换 URL
example.com/tasks.php?action=list
example.com/tasks.php?action=detail&id=48
example.com/tasks.php?action=add&name=Test
进入那些
example.com/tasks/list
example.com/tasks/detail/48
example.com/tasks/add?name=Test
所以,我需要两个变量,但第二个必须是可选的,文件扩展名必须隐藏,我需要添加 get 变量。
解决方案
所以,我从某人的 GitHub 页面(这里)偷了基地:
Original URL:
http://www.example.com/index.php?category=fish
Desired destination URL:
http://www.example.com/category/fish/
.htaccess syntax:
RewriteEngine On
RewriteRule ^/?category/([^/d]+)/?$ index.php?category=$1 [L,QSA]
您可以添加另一个参数。有多个参数:
RewriteEngine On
RewriteRule ^/?tasks/([A-Za-z]{0,})/?$ tasks.php?action=$1 [L,QSA]
RewriteRule ^/?tasks/([A-Za-z]{0,})/([0-9]{0,})/?$ tasks.php?action=$1&id=$2 [L,QSA]
有了这个,您可以发布漂亮的链接版本,服务器将在幕后使用 GET 参数将流量引导到 URL。
编辑:由于 QSA,第一条规则将默认捕获您的第三种情况。
推荐阅读
- r - 有没有办法使用 purrr 中的 pmap 函数来迭代调整数据集?
- angular - Angular Azure Active Directory B2C 身份验证 - CORS 问题
- tensorflow - Tensorflow 服务自定义 gpu op 编译时找不到依赖项
- asp.net-core - 对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态。GET 工作 POST PUT DELETE 不工作
- java - Java JDK 11 版本与 JavaFX 的兼容性
- python - 你如何防止 Flask 记录特定的路由?
- automation - 将日语支持添加到 OCR | RPA
- symfony - 无法解析“xx”、UserPasswordEncoderInterface、Symfony 4.* 的参数 $encoder
- javascript - Vue setTimeout 过滤器问题
- node.js - sequelize-cli db:migrate "hangs" 向新添加的列添加检查约束