添加子目录重定向

时间:2016-01-26 15:40:51

标签: .htaccess redirect url-redirection

我正在尝试为搜索添加新的路径级别,例如:

wwww.website.com/s/blablabla/2

变为

www.website.com/s/videos/blablabla/2

2是页面。

但是,我无法使用htaccess,因为它保持循环(我认为,因为/ s / videos / contains / s /它继续进行重写...)

到目前为止,我尝试了这些代码:

RewriteCond %{REQUEST_URI} !^/s/.*$
RewriteRule ^(.*)$ /s/videos/$1 [L]

这给我以下错误:

  

在此服务器上找不到请求的网址/s/videos/index.php。   此外,尝试使用ErrorDocument处理请求时遇到404 Not Found错误。

此代码:

RewriteCond %{REQUEST_URI} ^/s/.*$
RewriteRule ^(.*)$ /s/videos/$1 [L]

给我以下错误:

  

内部服务器错误

     

服务器遇到内部错误或配置错误   无法完成您的请求。

     

请联系服务器管理员,   webmaster@website.com并告知他们错误的时间   发生了,你可能做过的任何可能导致这种情况发生的事情   错误。

     

有关此错误的详细信息可能在服务器错误中可用   日志中。

我也试过

RewriteRule !^s(/|$) s/videos%{REQUEST_URI} [L]

RewriteRule ^s/(.*)$ /s/videos/$1 [R=301,NC,L]

但似乎没有工作......

修改

RewriteRule ^s/([A-Za-z0-9-\s]+)/?$ /s/videos/$1 [R=301,NC,L]

工作正常但只有在搜索标记后没有页面...

EDIT2:

我能够通过为不同的场景添加多行来实现它:

RewriteRule ^s/([A-Za-z0-9-\s]+)/?$ /s/videos/$1 [R=301,NC,L]
RewriteRule ^s/([A-Za-z0-9-\s]+)/([0-9]+)/?$ /s/videos/$1/$2 [R=301,NC,L]

不确定这是否是正确的方法

如果我这样做

RewriteRule ^s/(.*)$ /s/videos/$1 [R=301,NC,L]

它给了我

/s/videos/videos/videos/videos/videos/videos/videos/videos/videos/videos/videos/videos/videos/videos/videos/videos/videos/videos/videos/videos/videos/searchtag

EDIT3:

RewriteCond %{REQUEST_URI} !^/s/(videos|members|photos)
RewriteRule ^s/(.*)$ /s/videos/$1 [R=301,NC,L]

这是有效的......

1 个答案:

答案 0 :(得分:0)

试试这段代码。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^s/([^/]+)/([0-9]+)/?$ /s/videos/$1/$2 [L]