添加R = 301后.htaccess重定向停止工作

时间:2019-03-08 13:33:42

标签: .htaccess

我们在public_html / subfolder下创建了一个网站。用户将需要访问mywebsite.com/subfolder才能查看我们网站的内容。我们希望使用户仅输入mywebsite.com(不带子文件夹)即可查看内容。我们通过将下面的代码放在public_html / .htaccess中来实现这一点:

RewriteEngine On
RewriteCond %{HTTP_HOST} mywebsite.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^mywebsite.com$
RewriteCond %{REQUEST_URI} !subfolder/
RewriteRule (.*) /subfolder/$1 [L,NC]

从某种意义上说,该代码非常有用,它可以在用户输入mywebsite.com时自动将用户重定向到mywebsite.com/subfolder。唯一的问题是,它将在浏览器地址栏中显示整个mywebsite.com/subfolder。我们想从网址中删除子文件夹,因此将下面的代码放在public_html / subfolder / .htaccess中:

   <IfModule mod_rewrite.c>

        Options +FollowSymLinks
        RewriteEngine on

        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

        RewriteCond %{REQUEST_METHOD} ^TRAC[EK]
        RewriteRule .* - [L,R=405]

        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-l

        RewriteRule ^subfolder(.*)$ /$1 # this is the line we added
        RewriteRule .* index.php [NC] # this is the line we added
    </IfModule> 

这两段代码很好地协同工作,并且完全实现了我们想要的功能。但是,当我们将R = 301(我们认为这是SEO的一种良好做法)添加到任一/两者

RewriteRule (.*) /subfolder/$1 [R=301,L,NC] # in public_html/.htaccess

RewriteRule .* index.php [R=301,NC] # in public_html/subfolder/.htaccess

即使重定向仍然正常运行,当用户输入mywebsite.com时,URL仍将保留在mywebsite.com/subredirectory中。

如果有人可以为此问题提供一些帮助,我们将不胜感激。非常感谢您的帮助。

非常感谢

0 个答案:

没有答案