.htaccess 重定向到URL中名称为的子目录

.htaccess 重定向到URL中名称为的子目录,.htaccess,.htaccess,域名:Domain.com 子目录:nz 场景: domain.com->domain.com/nz/ domain.com/anything/->domain.com/nz/anything/ domain.com/404page->domain.com/nz/404page 编辑 同样在场景中-domain.com/nz->domain.com/nz 如何使用.htaccess实现这一点?试试: RedirectMatch ^/(?!nz/)(.*)$ /nz/$1 或: 尝试将其

域名:Domain.com 子目录:nz

场景:

  • domain.com->domain.com/nz/
  • domain.com/anything/->domain.com/nz/anything/
  • domain.com/404page->domain.com/nz/404page
编辑

  • 同样在场景中-domain.com/nz->domain.com/nz
如何使用.htaccess实现这一点?

试试:

RedirectMatch ^/(?!nz/)(.*)$ /nz/$1
或:


尝试将其添加到web文档根文件夹中的
.htaccess
文件(通常是
public\u html
htdocs
):

一旦您确信重定向有效,您可以将
R
更改为
R=301
,使其永久化

这假设mod_rewrite已安装且已为
.htaccess
文件激活。 如果不确定是否安装了mod_rewrite,请查看
phpinfo()输出中已安装模块的列表
默认情况下,
.htaccess
文件未启用mod_rewrite。如果您正在管理自己的服务器,请打开
httpd.conf

并确保webroot目录块包含以下行之一:
AllowOverride FileInfo
AllowOverride All

好的一行解决方案-第一行。唯一的问题是,当我尝试打开domain.com/nz时,它会打开domain.com/nz/nz-我如何阻止它?@karankhana尝试将regex模式更改为
(?!nz/?)
@karankhana如果
nz
是一个目录,那么如果没有apache重定向以包含尾随斜杠,您将无法到达那里。这是因为如果没有尾随斜杠(从而列出任何目录的内容),有一种方法可以绕过目录索引。如何从该规则中排除文件?例如,domain.com/something.php应该始终是domain.com/something.php?
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(?!nz/)(.*)$ /nz/$1 [L,R]
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(?!nz) nz%{REQUEST_URI} [L,R,DPI]