2011-08-31 48 views
0

我做我的Web服务器上的一些改组,并想改变我的结构的工作方式。目前,一切都存储在最低水平,这样,当我访问我的网站的URL看起来是这样的:如何使用.htaccess更改我的网站结构?

www.example.com 
www.example.com/page1.php 

我在我的网站很多页面,我想给他们搬出主文件夹中。例如。

www.example.com/folder/ 
www.example.com/folder/page1.php 

但是,我想让用户不要看到URL的/文件夹/部分。换句话说,当用户访问我的网站,我希望他能浏览到:

www.example.com/page1.php 
www.example.com/myfolder1/page1.php 
www.example.com/myfolder2/page2.php 
www.example.com/anyfoldername/anypagename.php 

,但实际上是在

www.example.com/folder/page1.php 
www.example.com/folder/myfolder1/page1.php 
www.example.com/folder/myfolder2/page2.php 
www.example.com/folder/anyfoldername/anypagename.php 

我想要的网址显示没有在任何时候都/文件夹。

有没有办法用.htaccess文件做到这一点?

+0

你可以使用mod_rewrite重写/page1.php到/folder/page1.php在服务器上。但想象一下,/ folder2中的page1.php和/ folder2中的page2.php。通过访问www.example.com/page2.php,我认为重写引擎无法知道文件所在的文件夹,除非您手动为所有页面设置重写。 –

回答

3

您可以轻松地做到这一点使用mod_rewrite的。例如:

Options +FollowSymLinks -MultiViews 
RewriteEngine On 

RewriteRule ^page1\.php$ /folder/page1.php [L] 

注: 这是被放置在.htaccess在您的网站的根文件夹。如果放置在其他地方可能需要一些小的调整。


UPDATE:

RewriteCond %{REQUEST_URI} !^/folder/ 
RewriteRule ^(.*)$ /folder/$1 [L] 
+0

这工作表示感谢。稍加说明。我有几乎100个嵌套在多个文件夹中的页面。我将如何做同样的事情,但是对于所有文件夹中的所有文件? www.example.com/folder1/folder2/page1.php – codescribblr

+0

我需要看到一些例子(从URL =>到URL)至斑点图案。如果有一些共同之处 - 我可以创建一个规则(或几条规则),它将一次覆盖一堆页面 - 这完全取决于它如何重写:如果有一个模式,那么它很容易如果不是的话 - 那就一个接一个。 – LazyOne

+0

www.example.com/page1.php => www.example.com/folder/page1.php, www.example.com/page2.php => www.example.com/folder/page2.php, WWW .example.com的/ myfolder1/page1.php中=> www.example.com/folder/myfolder1/page1.php, www.example.com/myfolder2/page2.php => www.example.com/folder/myfolder2/ page2.php – codescribblr

0
RewriteEngine On 
RewriteBase/
RewriteRule ^([^/]*)$ folder/$1 [L]