我在一个名为xyz
的目录中有一个Web应用程序。我正在尝试将所有请求重定向到子目录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目录,因为在我的情况下可能会重命名。因此,此目录不需要在重写规则
中进行硬编码答案 0 :(得分:2)
将此规则放在/xyz/.htaccess
:
RewriteEngine On
RewriteBase /xyz/
RewriteRule ^((?!www/).*)$ www/$1 [L,NC]
答案 1 :(得分:1)
如果您的DocumentRoot不包含xyz
路径,那么您需要在RewriteRule中指定。
例如:RewriteRule (.*) /xyx/www/$1 [L]
答案 2 :(得分:1)
我认为这应该有效或接近:
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)/([^/]+)$ $1/www/$2 [L]
答案 3 :(得分:1)
您只需要删除前导/重写到相对于当前文件夹的网址:
# /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]
适当调整。