如何使用.htaccess从URL隐藏目录名称

时间:2013-12-26 06:59:00

标签: php .htaccess

以下是我的网站网址结构,如下所示:http://www.sitename.com/new/about-us

我现在真正想要做的是从上面的网址中隐藏目录名称“new”,但管理网址应保持不变。

管理员网址如下:http://www.sitename.com/new/admin

我以前的.htaccess代码如下:

  RewriteEngine On
  RewriteBase /new/

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

  RewriteRule blog/ - [L]
  RewriteRule (^wlp) - [L]

  RewriteRule admin/ - [L]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %(REQUEST_FILENAME} !-d
  RewriteRule ^([\S\s/+.]+)/?$ index.php?url=$1 [QSA,L]

这是我的服务器目录结构:

  /public
    /new
      .htaccess
      index.php
      about-us.php
      /blog
      /admin

在这方面的任何帮助将受到高度赞赏。

2 个答案:

答案 0 :(得分:3)

听起来你想要完成的是common technique,我之前看到过将所有 public_html 请求转发给 public_html / public 从用户隐藏 public_html 目录的内容,并使 public_html / public 成为新的Web根目录。

尝试在public_html/.htaccess文件中使用此功能(您可以在 public_html / new / .htaccess 中进一步编写htaccess):

RewriteEngine on
RewriteBase /

#enforce www subdomain
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} ^sitename.com [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

#forward all requests, except new/admin, to the 'new' directory without the user's awareness
RewriteRule  new/admin  -  [S=2]
RewriteRule  ^$ new/    [L]
RewriteRule  (.*) new/$1 [L]

答案 1 :(得分:0)

这个.htaccess在/应该这样做:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^new/
RewriteRule ^(.*)$ new/$1 [L]