13

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

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

...对此:

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

我发现发布了一个类似的问题,但该解决方案似乎不适用于我的情况。到目前为止,我目前的尝试(似乎不起作用):

Options +FollowSymLinks
RewriteEngine On

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

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

4

3 回答 3

13

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

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/some/subdir/projects/.*$
RewriteRule ^(.*)$ /some/subdir/projects/$1 [L]
于 2009-05-14T17:40:28.773 回答
7

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

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

由于您想在/some/subdir/目录中使用此规则,请按如下方式更改规则:

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

如果您想重定向 to 的任何请求,请/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]
于 2009-05-14T17:05:00.637 回答
1

我会用这个:

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

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

请注意,/实际上需要前导来匹配 URL 的开头,除非您在RewriteBase /某处进行了设置。

于 2009-05-14T17:16:28.660 回答