我们在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中。
如果有人可以为此问题提供一些帮助,我们将不胜感激。非常感谢您的帮助。
非常感谢