Apache 将重写规则重定向到另一个重写规则

Apache 将重写规则重定向到另一个重写规则,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我的网站是通过以下方式建立的: /vacation/country/ RewriteRule ^vacation/(.*)/ vacation.php?country=$1 [L] 已重定向到服务器上的某个文件。 我现在想将此更改/更新为 /vacation-country/ 我对此使用重定向 RewriteRule ^vacation/(.*)/ vacation-$1/ [R=301,L] RewriteRule ^vacation-(.*)/ vacation.php?country=

我的网站是通过以下方式建立的:

/vacation/country/
RewriteRule ^vacation/(.*)/ vacation.php?country=$1 [L]
已重定向到服务器上的某个文件。 我现在想将此更改/更新为

/vacation-country/
我对此使用重定向

RewriteRule ^vacation/(.*)/ vacation-$1/ [R=301,L]
RewriteRule ^vacation-(.*)/ vacation.php?country=$1 [L]
这是一个404错误,包括服务器的完整路径,这是不可原谅的。我试图从重写规则中删除[L],但没有成功


你知道我应该如何以正确的方式设置重定向以归档上述内容吗?

尝试在正则表达式中使用
$

RewriteRule ^vacation/([^/]+)/?$ /vacation-$1/ [R=301,L]

RewriteRule ^vacation-([^/]+)/?$ /vacation.php?country=$1 [L,QSA]

我尝试了您建议的解决方案,但效果仍然相同,收到了404错误消息。有没有办法找出问题的原因?是哪个URI造成的404它是
/vacation country/
?另外,请确保您在使用任何其他规则之前先使用此301规则。直接输入/vacation country/很有效,但当输入/vacation/country/时,它会将我指向404。我甚至创建了一个虚拟链接(/vacation1/country),以确保没有其他行影响此规则。仍然无法按预期工作。它将我重定向到:不直接运行第二个选项,这没有问题。这是第一种选择,但仍然没有达到预期效果。