Regex 重写url,为同一url接受两个不同单词的表达式

Regex 重写url,为同一url接受两个不同单词的表达式,regex,apache,.htaccess,mod-rewrite,redirect,Regex,Apache,.htaccess,Mod Rewrite,Redirect,我正在重写一个双语网站的url 目前,我需要写两次相同的规则,唯一的区别是类别名称“product”和“prodotto”的语言: RewriteRule ^product/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([0-9]+)$ index.php?public=12&n=$1&a=$2&id=$3 [L] RewriteRule ^prodotto/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([0-9]+)$ inde

我正在重写一个双语网站的url

目前,我需要写两次相同的规则,唯一的区别是类别名称“product”和“prodotto”的语言:

RewriteRule ^product/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([0-9]+)$ index.php?public=12&n=$1&a=$2&id=$3 [L]

RewriteRule ^prodotto/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([0-9]+)$ index.php?public=12&n=$1&a=$2&id=$3 [L]
有没有办法只写一次这条规则,接受英语的“product”和意大利语的“prodotto”两种情况

比如:

RewriteRule ^([prodotto-product])/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([0-9]+)$ index.php?public=12&n=$1&a=$2&id=$3 [L]

您可以使用regex alternation将其合并为一个:

RewriteRule ^(?:prodotto|product)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([0-9]+)$ index.php?public=12&n=$1&a=$2&id=$3 [L,QSA]

谢谢,这很有效!只有一件事:我应该在重写规则中始终使用QSA吗?这是什么?
QSA
(查询字符串附加)标志在添加新查询参数时保留现有查询参数。因此,在您的情况下,
QSA
是很好的选择。