如何使用.htaccess从URL隐藏文件夹名称

时间:2015-05-12 14:41:55

标签: .htaccess url-rewriting url-redirection

我有一个带有根文件夹' www'的网站,但我将所有php文件包括index.php放在root的子文件夹中。 我自己写了一个.htaccess文件来重定向,所以如果我输入www.test.com,它会跳转到www.test.com/folder并显示index.php

在它下面是我放在根目录中的.htaccess

 RewriteEngine On
 RewriteBase /
 RewriteRule ^folder2 - [L] 
 #ignore folder2 in which I put important files, but no works for the website
 RewriteCond %{REQUEST_URI} !^/folder(.*)
 RewriteRule (.*) /folder/$1

现在,我想更改.htaccess文件以实现这些目标:

  1. 当我输入www.test.com时,像往常一样跳转到www.test.com/folder,但显示没有文件夹的网址。
  2. 文件夹中的所有页面都会显示没有文件夹名称的网址。 如

    www.test.com/shop/page1 - > www.test.com/page1

  3. 我搜索了一些脚本,但都没有。

3 个答案:

答案 0 :(得分:5)

我发现这个相关问题可以解答您的问题。答案的片段是(注意:它根据您的需要进行了调整):

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+folder/([^\s]+) [NC]
RewriteRule ^ %1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?!^folder/)^(.*)$ /folder/$1 [L,NC]

参考:https://stackoverflow.com/a/18361995/3673491

答案 1 :(得分:0)

根据您当前的规则。你可以稍微调整一下。

 RewriteEngine On
 RewriteBase /
 #ignore folder2 in which I put important files, but no works for the website
 RewriteRule ^folder2/? - [L] 

 RewriteRule ^/?$ /folder/ [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ /folder/$1 [L]

答案 2 :(得分:0)

您可以使用以下代码。

  

RewriteEngine On

     

RewriteBase /

     

RewriteRule ^ /?$ / folder / [L]

     

RewriteCond%{REQUEST_FILENAME}!-f

     

RewriteCond%{REQUEST_FILENAME}!-d

     

RewriteRule ^(。*)$ / folder / $ 1 [L]