组织代码:使用.htaccess重定向而不更改URL

时间:2016-01-07 12:24:29

标签: apache .htaccess

我有一个包含主页(商业资料)的网站和一个包含不同文件夹的文件夹:

  • 的index.html
  • / JS
  • / CSS
  • /图像
  • /博客
  • /项目

我想将所有主页资源移动到名为“site”的文件夹中。我想要的是如下结构:

  • /部位
    • 的index.html
    • / JS
    • / CSS
    • /图像
  • /博客
  • /项目

当我的用户访问www.example.com时,浏览器应该加载/站点资源而不更改网址,当他们访问www.example.com/blog时,浏览器应该加载/博客资源(如预期的那样)。

我正在尝试在我的根文件夹上使用.htaccess文件,并把它放在它上面:

RewriteEngine on
RewriteRule /(.*) /site [R]

但它不起作用。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

[R]标志会导致向浏览器发出HTTP重定向。

相反,试试这个:

RewriteEngine On
RewriteBase /
# Ensure you do not running in redirection loop
RewriteCond %{REQUEST_URI} !^/site/
# Proceed if target is not a directory (handle accessing /blog, etc)
RewriteCond %{REQUEST_FILENAME} !-d
# Proceed if target is not a file
RewriteCond %{REQUEST_FILENAME} !-f
# Redirect all incoming requests to site/
RewriteRule ^(.*)$ /site/$1 [L]
# Redirect domain itself to the main site file (index.html, index.php, etc)
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ index.html [L]

请注意:

  • site的所有实例替换为您的子目录
  • example.com替换为您的TLD域。