.htaccess URL重写到子目录

时间:2009-05-14 16:57:13

标签: .htaccess mod-rewrite rewrite

将“/ some / subdir”下面的任何内容重写为“/ some / subdir / projects”的最佳方法是什么,如下所示:

http://www.mydomain.com/some/subidr/test/

......对此:

http://www.mydomain.com/some/subdir/projects/test/

我发现了similar question,但解决方案在我的案例中似乎没有用。到目前为止我目前的尝试(似乎不起作用):

Options +FollowSymLinks
RewriteEngine On

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

编辑:我忘了提及.htaccess文件必须位于/ some / subdir中,因为我没有对服务器的web根目录的写访问权。

3 个答案:

答案 0 :(得分:11)

这是我最终开始工作的解决方案:

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/some/subdir/projects/.*$
RewriteRule ^(.*)$ /some/subdir/projects/$1 [L]

答案 1 :(得分:6)

在服务器的文档根目录中的.htaccess配置文件中尝试此规则:

RewriteEngine on
RewriteRule !^some/subdir/projects(/|$) some/subdir/projects%{REQUEST_URI} [L]

如果要在/some/subdir/目录中使用此规则,请按以下步骤更改规则:

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

如果您想将/some/subdir/projects/ foobar 的任何请求重定向到/some/subdir/ foobar ,请将此规则高于前面提到的:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /some/subdir/projects[/?\s]
RewriteRule ^some/subdir/projects/?([^/].+)?$ /some/subdir/$1 [L,R=301]

答案 2 :(得分:1)

我会用这个:

RewriteEngine On
RewriteRule ^(/some/subdir)/(.*)$ $1/projects/$2

这会将/some/subdir/<anything>重定向到/some/subdir/projects/<anything>

请注意,实际需要前导/来匹配网址的开头,除非您已将RewriteBase /设置在某处。