.htaccess URL重写到子目录

Wil*_*lco 10 .htaccess mod-rewrite rewrite

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

http://www.mydomain.com/some/subidr/test/
Run Code Online (Sandbox Code Playgroud)

......对此:

http://www.mydomain.com/some/subdir/projects/test/
Run Code Online (Sandbox Code Playgroud)

我发现了一个类似的问题,但解决方案在我的案例中似乎没有用.我目前的尝试到目前为止(似乎不起作用):

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/projects/.*$
RewriteRule ^(.*)$ /projects/$1 [L]
Run Code Online (Sandbox Code Playgroud)

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

Wil*_*lco 12

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

RewriteEngine On

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

  • 看起来像重定向,而不是重写 (5认同)

Gum*_*mbo 6

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

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

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

RewriteRule !^projects(/|$) projects%{REQUEST_URI} [L]
Run Code Online (Sandbox Code Playgroud)

如果你想重定向的任何请求/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]
Run Code Online (Sandbox Code Playgroud)