url重写以隐藏目录

时间:2016-04-16 12:46:42

标签: html .htaccess mod-rewrite url-rewriting

我的网站目录包含2个文件夹:website1website2

所以要访问它们:

  • http://www.example.com/website1

  • http://www.example.com/website2

我想通过以下网址访问它们:

  • 网站1:http://www.example.com

  • website2:http://www.example.com/website2

所以我写了这个.htaccess文件:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*)$ website1/$1 [L]

这适用于website1,但是如果我想访问website2它不起作用(因为它重定向到http://www.example.com/website1/website2我认为)

如果仅在网址为http://www.example.com时才能将此文件编写为重定向?

2 个答案:

答案 0 :(得分:1)

您可以:

  • .htaccess中创建另一个/website2并禁用重写引擎:

    RewriteEngine Off
    

    这将阻止父.htaccess中的mod_rewrite指令运行,因此不会重写请求。

或者,

  • 修改文档根目录.htaccess中现有的mod_rewrite伪指令,以排除对/website2子目录的请求。例如:

    Options +FollowSymLinks
    RewriteEngine On
    
    RewriteCond %{REQUEST_URI} !^/website2
    RewriteRule (.*) website1/$1 [L]
    

    CondPattern 上的!前缀使正则表达式无效,因此仅当REQUEST_URI并非以/website2开头时,它才成功。

    您还可以将其合并为一个指令,效率稍高:

    RewriteRule !^website2 website1%{REQUEST_URI} [L]
    

    请注意,REQUEST_URI服务器变量已经包含斜杠前缀,因此不得在RewriteRule substitution 中重复。。

答案 1 :(得分:0)

我认为你不需要htaccess。将您的website1文件放在主根目录中。创建一个新文件夹并将其命名为website2。将website2文件放在这个新文件夹中。我想这就是你想要的。