我需要在URI中使用特定关键字重定向每个请求,只需将此单个关键字替换为另一个,然后将其余关键字保留在Apache网络服务器上。
但是这种行为有一个例外: 如果除第一个关键字之外的其他关键字是URI的一部分,则此重定向应不。
示例:
https://www.domain.tld/projects/myFirstProject
应重定向到
https://www.domain.tld/references/myFirstProject
但是如果关键字" projects"似乎位于"类别"的子目录中,不应重定向请求:
https://www.domain.tld/category/projects
以下是我为RewriteMatch所获得的内容,它适用于重定向,但不能使用"类别"来处理异常:
RedirectMatch 301 /projects(.*) /references$1
注意:不应更改除被替换的关键字之外的部分URI!
如何添加正确的RewriteCond?我是否必须使用RewriteCond,RewriteRule解决方案重写RedirectMatch?这个解决方案怎么样?
谢谢!
答案 0 :(得分:1)
因此,如果您只想重定向,则网址以projects
开头,您可以这样做:
RewriteEngine On
RewriteRule ^projects(/.+|$) /references$1 [L,R=301,QSA]
演示:
修改强>
或者,如果您希望在网址 category
之前的任何地方显示<{1}},您可以这样做:
projects
RewriteEngine On
RewriteCond %{REQUEST_URI} !category/(.*)projects
RewriteRule (^|/)projects(/.+|$) /references$2 [L,R=301,QSA]
确保仅当网址不包含RewriteCond
后跟RewriteRule
时才会应用category
。