通配符重定向链接转到同一域上的根目录下的子文件夹

时间:2016-12-05 10:33:26

标签: php apache .htaccess redirect mod-rewrite

我已将网站从www.example.com移至www.example.com/subfolder,并使用.htaccess文件,我想将旧链接重定向到www.example.com并转到www.example.com/subfolder。我目前的.htaccess看起来像这样:

RewriteEngine on
RewriteCond %{HTTP_HOST} example\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /subfolder/$1 [L]

我还尝试过以下方法:

#RewriteCond %{REQUEST_URI} !^/subfolder/
#RewriteRule ^.*$ http://www.example.com/subfolder%{REQUEST_URI} [R=301,QSA,L]

我不断获取重定向循环或重定向无效并导致错误404.

2 个答案:

答案 0 :(得分:0)

你正在使用wordpress吗?或者你只是移动一下?

如果你移动一般这个单行将工作

RedirectMatch ^/$ /subfolder/

来自here的原始答案

这是我目前正在使用的另一种解决方案。

请勿复制和粘贴。您需要将替换DOMAIN (不包含.com)和 SUBFOLDER 添加到您想要的名称。

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} !^/subfolder/

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.

# Rewrite all those to insert /folder
RewriteRule ^(.*)$ /subfolder/$1 [L]

答案 1 :(得分:0)

您可以在网站根目录.htaccess(subfolder的父目录)中使用此规则作为第一条规则

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?!subfolder/)(.*)$ /subfolder/$1 [L,NC,NE,R=301]

# remaining rules go here

确保在测试此更改时完全清除浏览器缓存。