将根域重定向到子文件夹

时间:2018-07-27 23:26:53

标签: .htaccess redirect

这是我们当前的.htaccess文件,其中包含我们需要保留的规则,但是我们还需要添加一个新规则,该规则将从根域重定向到子文件夹URL exact->inexact ..

example.com -> example.com/fl/en.html

1 个答案:

答案 0 :(得分:1)

如果您将指令放置在正确的位置,似乎没有什么特别需要的内容。要将文档根目录(用于example.com重定向到/fl/en.html中的.htaccess可以这样做:

RewriteRule ^$ /fl/en.html [R,L]

这只需要放在之后指令,该指令为主机domain.co.nz之前的主机重写所有内容。 (您可以将其与重定向/home.html/info.html等的现有指令结合使用)

您现有的规则可以进一步优化。与其在RewriteCond指令中检查请求的URL路径并在RewriteRule pattern 中允许一切通过,不如做一个事更有效您可以先使用RewriteRule 模式(因为这是首先处理的内容)。

此外,由于您使用的是WordPress,因此添加到.htaccess的所有自定义指令都应位于# BEGIN WordPress部分之外。 WordPress本身会维护此部分,因此您进行的任何手动自定义都可能在更新期间被覆盖。

此外,无需重复执行RewriteEngine指令。 (此指令的 last 实例获胜并控制整个文件。)

因此,将所有这些放在一起,我们会得到类似的东西:

# Rewrite all requests for domain.co.nz to subfolder
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.co\.nz$
RewriteRule !^subfolder /subfolder%{REQUEST_URI} [L]

# Redirect document root to /fl/en.html
RewriteRule ^$ /fl/en.html [R,L]    

# Redirect specific paths to /fl/en.html
RewriteRule ^(/home.html|/info.html|/flash|/external) /fl/en.html [R=301,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]    
</IfModule>    
# END WordPress

请注意,上述指令(带有单个R)是临时(302)重定向。如果要永久保留,请将其更改为R=301,但是只有在您测试它可以正常工作后才能避免(避免缓存问题)。

一如既往,请确保在测试之前已清除浏览器缓存。