我有一个棘手的问题(至少对我来说)。
我正在尝试重写/
到一个文件夹/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]