Apache 如何使用RewriteRule删除url的一部分

Apache 如何使用RewriteRule删除url的一部分,apache,mod-rewrite,Apache,Mod Rewrite,我找到了一个可以回答我问题的方法,但我无法让它工作 我有这个网址: https://www.mywebsite.com/section1/section2/exercise/someurl 我想改写成: https://www.mywebsite.com/section1/section2/someurl 我尝试了以下方法: RewriteRule ^(.\*)/exercise/(.\*)$ https://%{SERVER_NAME}/$1/$2 [NC,R=301,L] 以及: 但U

我找到了一个可以回答我问题的方法,但我无法让它工作

我有这个网址:

https://www.mywebsite.com/section1/section2/exercise/someurl
我想改写成:

https://www.mywebsite.com/section1/section2/someurl
我尝试了以下方法:

RewriteRule ^(.\*)/exercise/(.\*)$ https://%{SERVER_NAME}/$1/$2 [NC,R=301,L]
以及:

但URL不会被重写。我启用了
RewriteEngine
,我正在使用
RewriteRule
执行其他规则,这些规则工作正常

这是你的电话号码


有人有什么建议吗?谢谢。

看起来正则表达式与URL不匹配

您正在尝试将实际星号与此
\*
匹配

您想要的是匹配所有内容,以便
匹配第一个字符。添加
+
,现在它将匹配所有内容:
+

避免像这样的前斜杠也是一个好主意
\/


试试看:
^(+.+)\/exercise\/(.+)$

你好,nickstarob,谢谢你的建议。我遵循了您的提示,这些提示很清楚,并且使用了:^(+.+)\/exercise\/(.+)$$1/$2,但是URL仍然没有被重写。这是一个需要改变的问题。它是否需要重写?编辑您的问题并包含整个.htaccess文件。Hi@nickstaroba,感谢您的帮助。将修改后的正则表达式与RedirectMatch(重定向匹配)结合使用,而不是使用RewriteRule,它可以正常工作。我们目前正在使用:RedirectMatch 301^(+++)\/exercise\/(++)$1/$2我很想知道为什么这样做,但是:RewriteRule^(+++)\/exercise\/(++)$$1/$2[NC,R=301,L]没有。ThanksI需要查看完整的.htaccess文件。重定向匹配使用。可能是您的Apache安装配置不正确(即禁用)。另外,您的.htaccess文件是否包含上的行
重写引擎。htaccess包括服务器上配置的mod_别名上的行重写引擎
RewriteRule ^(.\*)/exercise/(.\*)$ $1/$2 [NC,R=301,L]