将“/ 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根目录的写访问权。
答案 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 /
设置在某处。