htaccess:如何将一个页面重定向到同一目录下的子页面?

时间:2014-05-06 20:06:39

标签: regex apache .htaccess

在我的CMS中启用漂亮的网址后,我有以下几页:

www.mydomain.com/cars/
www.mydomain.com/cars/carshome/
www.mydomain.com/cars/honda/
www.mydomain.com/cars/toyota/
...

我希望www.mydomain.com/cars/的所有请求都转到www.mydomain.com/cars/carshome/。因此,我一直试图在Apache .htaccess文件中使用(在执行漂亮的URL代码之后):

Redirect 301 /cars https://www.mydomain.com/cars/carshome/

结果是它进入无限循环:

https://www.mydomain.com/cars/carshome/carshome/carshome/...)。

如何解决?

第二个问题是,假设上面的解决方案需要在此更改:如何重定向另一个方向(从www.mydomain.com/trucks/truckshome/www.mydomain.com/trucks/)?

2 个答案:

答案 0 :(得分:1)

而不是Redirect您可以使用RedirectMatch指令来实现其正则表达式功能:

RedirectMatch 301 ^/cars/?$ https://www.mydomain.com/cars/carshome/

答案 1 :(得分:0)

这应该适合你:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/cars/carshome/(.*)
RewriteRule ^cars/(.*)$ /cars/carshome/$1 [R=301,L]

上面会检查网址是否包含cars/carshome/,如果包含RewriteCond %{REQUEST_URI} ^/trucks/truckshome/(.*) RewriteRule ^trucks/truckshome/(.*)$ /trucks/$1 [R=301,L] ,则没有任何反应,但如果没有,则会重定向。

关于第二个问题,这应该有效:

{{1}}