用 htaccess 重写 2 个不同的目录?

用 htaccess 重写 2 个不同的目录?

我有一个棘手的问题(至少对我来说)。

我正在尝试重写/到一个文件夹/webroot/www。我有一些简单的代码,它可以工作:

RewriteRule ^$ /webroot/www/ [L]

然而,如果 URL 以 开头components,后面跟着其他内容(例如foo/components/foo,并且foo是 内部存在的实际目录components,则我应该重写为/components/foo/www

我该如何实现这一点?我似乎想不通。

我正在使用带有 .htaccess 的 Apache。

答案1

我相信这至少在某种程度上可以做到这一点:

RewriteEngine   On
# rewrite components/.../ -> components/.../www
RewriteCond %{REQUEST_URI} "^/components/"
RewriteCond %{REQUEST_URI} "!^/components/.*/www"
RewriteRule "components/(.*)/" "/components/$1/www" [L]
# if the rewritten directory doesn't exist, restore 
RewriteCond %{REQUEST_URI} "^/components/.*/www"
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule "components/(.*)/www" "/components/$1" [L]
RewriteRule ^$ "webroot/www" [L]

相关内容