.htaccess主域到子文件夹,但/子文件夹仍然可以访问

时间:2017-02-21 12:59:01

标签: apache .htaccess mod-rewrite

我在托管平台http://example2.com上有一个托管域http://example.com

问题是,如果我转到http://example2.com/example2/fr,我就不会被重定向到http://example2.com/fr并且我已经尝试了解决方案,但仍然有重定向循环。

在public_html文件夹中,有一个子文件夹/ example2,其中包含http://example2.com的文件

> public_html
  - .htaccess
  - index.php
  > assets
  > css
  > js
  > example2
    - .htaccess
    - index.html
    > fr
      - index.html
    > en
      - index.html

现在,在public_html文件夹中,我的.htaccess文件中的重定向规则是:

<IfModule mod_rewrite.c>
  RewriteEngine on

  # Redirect the example2 to the subfolder /example2
  RewriteCond %{HTTP_HOST} ^(www\.)?example2\.com$ [NC]
  RewriteRule !^example2/ /example2%{REQUEST_URI} [L,NC]
</IfModule>

在/ example2文件夹中,我的htaccess文件重定向如下:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_HOST} !^www\.
  RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

  RewriteRule ^index\.html$ / [R=301,L]
  RewriteRule ^(.*)/index\.html$ /$1 [R=301,L]

  #RewriteRule ^(.*)$ /$1 [R=301,L]
</IfModule>

1 个答案:

答案 0 :(得分:1)

您的/example2/.htaccess应该是这样的:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteRule ^index\.html$ / [R=301,NC,L]

RewriteRule ^(.*)/index\.html$ /$1 [R=301,NC,L]

# remove /example2/ from URLs
RewriteCond %{THE_REQUEST} \s/+example2(/\S*)\s [NC]
RewriteRule ^ %1? [R=301,L,NE]
相关问题