首页 > 解决方案 > 如何使用多个 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 变量。

标签: apache.htaccessmod-rewrite

解决方案


所以,我从某人的 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,第一条规则将默认捕获您的第三种情况。


推荐阅读