Apache别名/重写到子目录而不重定向

时间:2015-10-15 04:11:41

标签: apache .htaccess mod-rewrite apache2.2 mod-alias

例如,我正在foo访问项目https://localhost/projects/foo/dev/

我想重写网址,以便{Document}文件夹中https://localhost/projects/foo/指向projects/foo/dev/

这应该是HTTP 3xx重定向。此外,dev1dev2等不应该是可访问的(除非dev内有projects/foo/dev/assets/js/jquery.min.js -> https://localhost/projects/foo/assets/js/jquery.min.js 目录,但这些名称不太可能。“当然,路径的其余部分以及查询字符串和片段都需要保留,例如:

error.log

这是我在DocumentRoot文件夹中的目录结构:

  • 项目/
    • 富/
      • 开发/
      • DEV1 /
      • DEV2 /
      • DEV3 /
    • 酒吧/
      • 开发/
      • DEV1 /
      • DEV2 /
    • 等......

我已尝试在this question中发布的答案,但即使重新启动Apache也无法生效。

我也试过这个似乎是正确的但是在RewriteEngine on RewriteRule ^(.*)$ src/$1 [L,QSA] 中给了我带有无限重定向错误的HTTP 500:

foo

我只能访问每个项目目录(例如barprojects),并且父目录在其他计算机上可能不会被称为path。因此,这需要在htaccess文件中完成,而不是httpd.conf。

1 个答案:

答案 0 :(得分:0)

您可以在projects/.htaccess

中使用
RewriteEngine on
RewriteCond $2 !^dev/ [NC]
RewriteRule ^(foo|bar)/(.*)$ $1/dev/$2 [NC,L]

projects/中的每个目录(不仅是foobar):

RewriteEngine on
RewriteCond $2 !^dev/ [NC]
RewriteRule ^([^/]+)/(.*)$ $1/dev/$2 [L]