Regex 重写url,为同一url接受两个不同单词的表达式
我正在重写一个双语网站的url 目前,我需要写两次相同的规则,唯一的区别是类别名称“product”和“prodotto”的语言: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
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
是很好的选择。