我有一个目录假设一个Web应用程序xyz
。 我想重定向到一个子目录所有请求www
。 我目前的.htaccess代码是:
RewriteEngine On
RewriteRule (.*) /www/$1 [L]
但是,当我访问http://example.com/xyz/some_url
的请求重定向到http://example.com/www/some_url
而http://example.com/xyz/www/some_url
这是我想要的。
更新:对不起,我忘了提及的目录XYZ在我的情况很可能会改名。 因此,这个目录并不需要在重写规则被硬编码
发生在这个规则/xyz/.htaccess
:
RewriteEngine On
RewriteBase /xyz/
RewriteRule ^((?!www/).*)$ www/$1 [L,NC]
如果您的DocumentRoot不包含xyz
路径,那么你就需要在重写规则来指定。
例如: RewriteRule (.*) /xyx/www/$1 [L]
这应该工作或接近,我认为:
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)/([^/]+)$ $1/www/$2 [L]
使用相对路径和两个.htaccess文件
你只需要删除前面的/重写相对于当前文件夹中的网址:
# /xyz/.htaccess
RewriteEngine on
RewriteRule (.*) www/$1 [L]
这将改写/xyz/foo
到/xyz/www/foo
。
为了防止重定向环路添加.htaccess
文件到www
子文件夹如:
# /xyz/www/.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
酌情调整。