2015-05-12 46 views
2

我有一个网站的根文件夹'www',但我把所有的PHP文件,包括index.php在一个子文件夹的根。 我自己写了一个.htaccess文件重定向,所以如果输入www.test.com,它会跳转到www.test.com/folder并显示index.php如何隐藏文件夹名称使用.htaccess

下面是我放入根目录下的我的.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像往常一样,但没有文件夹显示的URL。
  2. 文件夹中的所有页面将显示没有文件夹名称的url。 如

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

我搜索了一些剧本,但他们都不工作。

+0

看看这个...... http://stackoverflow.com/questions/18361419/hide-directory-name-from-url – NinjaCat

+0

'/ shop /'与'/ folder /'有什么关系?他们是一样的吗? – anubhava

回答

3

我发现这个相关的问题可以解答你的问题。从答案的片段是(注意:它调整到您的需要):

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

+0

我应该用根目录中的.htaccess替换这个文件,对吗?网站只跳转到该文件夹​​,但url仍然是'www.test.com/folder'。 – user3404516

+0

请注意,我刚刚使用@NinjaCat建议的答案更新了代码,并再次适合您的需求。看看它,并告诉我它现在是否正常工作。我在这里做了一个简单的本地测试,它工作。 请注意,您需要更改所在文件夹的所在位置,并使用您想要赋予该文件夹的实际名称。 –

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] 
+1

这不起作用。该网站甚至不再显示index.php页面。 – user3404516

+0

然后您可以尝试更新的规则。 –

+0

它仍然没有跳跃。我应该把这个文件放在文件夹中还是保留在根目录下? – user3404516

0

您可以使用下面的代码。

RewriteEngine叙述在

RewriteBase/

重写规则^ /?$ /文件夹/ [L]

的RewriteCond%{} REQUEST_FILENAME!-f

的RewriteCond%{} REQUEST_FILENAME !-d

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

相关问题