如何redirect/服务/服务/一次?

通过htaccess文件我试图redirect/services /services/onetime但它redirect到/services/onetime/onetime/onetime/...

代码有什么问题,有没有办法做到这一点?

这是我用过的代码:

 redirect 301 /services/ /services/onetime/ 

 redirect 301 /services/ /service/onetime/ 

(假设这只是目标url上的拼写错误?)

mod_alias Redirect指令是前缀匹配,并将匹配后的所有内容附加到目标URL的末尾。 因此,这也将匹配redirect的URL /services/onetime/ ,然后将匹配的所有内容(即onetime/ )追加到/services/onetime/等的末尾,直到达到浏览器redirect限制。

您将需要使用(mod_alias) RedirectMatch指令,而使用正则expression式。 例如:

 RedirectMatch 301 ^/services/$ /services/onetime/ 

这只匹配/services/并redirect到/services/onetime/ (包括尾部的斜杠)。

确保在testing之前清除了任何中间caching,因为之前(错误的)301redirect可能已被浏览器caching。

但是,如果你有现有的mod_rewrite指令(即RewriteRule ),那么你应该考虑使用mod_rewrite来代替这个redirect,以避免潜在的冲突。 例如:

 RewriteRule ^services/$ /services/onetime/ [R=301,L] 

这可能需要任何其他mod_rewrite指令之前 。 使用临时(302)redirect进行testing会更容易,因为它们不会被浏览器caching,与永久(301)redirect不同。 所以,确保您的浏览器caching被清除。

这应该工作(除非有其他规则的干扰):

 RewriteEngine on RewriteRule ^(.*)services /services/onetime [L,QSA]