apache - htaccess 重写传递两个变量或一个变量是否可用?

标签 apache .htaccess mod-rewrite rewrite

我想将第一个目录作为变量传递,将子目录作为另一个变量传递。

它适用于具有两个目录 (/something/something2) 的 url,但当我只尝试一个 (/something) 时出现错误 404。

RewriteRule ([^/]+)/([^/]+) /posts/?category2=$1&category2=$2 [L,QSA]

当类别 2 不可用时,如何只传递类别 1?

最佳答案

几个解决方案:

多个规则(更容易理解但有点慢):

RewriteRule ^([^/]+) /posts/?category2=$1 [L,QSA]
RewriteRule ^([^/]+)/([^/]+) /posts/?category2=$1&category2=$2 [L,QSA]

单一规则:

RewriteRule ^([^/]+)(/([^/]+))? /posts/?category2=$1&category2=$3 [L,QSA]

此处 URL 的第二部分 (/something2) 是可选的。请注意——$2 已更改为 $3。

关于apache - htaccess 重写传递两个变量或一个变量是否可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9869006/

相关文章:

regex - 使用可选参数重写规则以在 .htaccess 中进行重定向

php - .htaccess 只允许访问 index.php 和一个目录

php - 如何在 .htaccess 文件中指定范围以重定向 url

c# - Web 服务 - C# 客户端和 Apache 服务器基本身份验证 - 错误 HTTP 400 错误请求

带 SSL 的 Apache 反向代理

regex - WordPress 永久链接 : only using the post_id from the URL

apache - 设置自定义处理程序时重定向失败

linux - 从 Windows 10 复制我的网站文件后,Linux Mint 桌面上的本地主机访问被拒绝

java - 未在 Tomcat 中部署的 war 文件

php - codeigniter 将非 www 重定向到 www