使用.htaccess重写文件夹名称

时间:2009-08-12 07:40:10

标签: .htaccess rewrite

我想知道是否可以使用.htaccess来重写文件夹名称。 我的意思是这个。

假设我有一个网址:

www.site.com/folder1/page.php

现在我想将网址重写为(例如)

www.site.com/apple/page.php

folder1是我的网站空间上的现有文件夹。

重要:“apple”不是文件夹而只是名称!

好的,这是一步一步的计划:

  1. 用户类型www.site.com/folder1/login.php
  2. 网址应该重写,而不是将网址重定向到www.site.com/apple/login.php
  3. 这意味着apple只是一个名称而不是目录。所有代码都应该来自folder1。苹果应该只是folder1的别名。我不能只将folder1重命名为Apple。因此,我只需将folder1重写为apple

2 个答案:

答案 0 :(得分:39)

mod_rewrite只能重写/重定向请求的URI。因此,您需要请求/apple/…将其重写为相应的/folder1/…

试试这个:

RewriteEngine on
RewriteRule ^apple/(.*) folder1/$1

此规则会将每个以URI路径/apple/…内部开头的请求重写为/folder1/…


修改因为您实际上正在寻找相反的方法:

RewriteCond %{THE_REQUEST} ^GET\ /folder1/
RewriteRule ^folder1/(.*) /apple/$1 [L,R=301]

此规则旨在与上述其他规则一起使用。 /folder1/…的请求将从外部重定向到/apple/…/apple/…的请求将在内部重写回/folder1/…

答案 1 :(得分:5)

尝试:

RewriteRule ^/apple(.*)?$ /folder1$1 [NC]

您希望在网址中显示的文件夹位于语句的第一部分中 - 这是它将匹配的内容,第二部分将其“重写”到您现有的文件夹中。 [NC]标志意味着它将忽略大小写差异,例如Apple /仍将转发。

请参阅此处获取教程:http://www.sitepoint.com/article/guide-url-rewriting/

对于可从此处下载的Windows,还有一个不错的测试工具: http://www.helicontech.com/download/rxtest.zip 请注意测试人员需要省略域名 - 所以测试将针对/folder1/login.php

从/ folder1重定向到/ apple试试这个:

RewriteRule ^/folder1(.*)?$ /apple$1 [R]

重定向然后重写只需将上面的内容合并到htaccess文件中:

RewriteRule ^/folder1(.*)?$ /apple$1 [R]
RewriteRule ^/apple(.*)?$ /folder1$1 [NC]