使用.htaccess重写文件夹名称

问题描述:

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

可以说,我有一个像网址:

www.site.com/folder1/page.php 

现在我想的URL重写(例如)

www.site.com/apple/page.php 

的文件夹1是我网络空间的现有文件夹。

重要:“苹果”不是一个文件夹,而只是一个名字!

确定这里是一步步的计划:

  1. 用户类型www.site.com/folder1/login.php
  2. URL应该重写,而不是网址重定向到www.site.com/apple/login.php

这意味着apple只是一个名称而不是目录。所有的代码应该来自folder1。 Acacally苹果应该只是folder1的别名。我不能将folder1重命名为Apple。因此,我只是将folder1重写为apple

+0

不上你的网站苹果文件夹中存在吗? – Josh 2009-08-12 08:10:53

+0

不是它只是一个名字!!!! – sanders 2009-08-12 08:27:36

+0

抱歉,您需要更清楚您想要发生的事情。你能给我们一步一步你想要发生什么,例如用户输入的网址以及实际文件在你的网站空间中的位置。 – Josh 2009-08-12 08:44:58

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/…

+0

啊,Gumbo我认为你是对的。我误解了原始海报的意思,它被描述为倒退。 +1 – zombat 2009-08-12 07:50:33

+0

@zombat:像往常一样;) – Gumbo 2009-08-12 07:54:51

+0

我试过这个http://site.com/folder1/login.php,但它不会重写到http://site.com/apple/login.php – sanders 2009-08-12 07:58:43

尝试:

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

如果你希望出现在URL中的文件夹是在语句的第一部分 - 这就是它会匹配对和第二部分“重写”到您现有的夹。 [NC]标志意味着它将忽略大小写差异,例如Apple /将继续前进。

看到这里的教程:http://www.sitepoint.com/article/guide-url-rewriting/

也有适用于Windows一个很好的测试工具,你可以从这里下载: http://www.helicontech.com/download/rxtest.zip 只是要注意,你需要离开了域名测试仪 - 这样该测试是针对/folder1/login.php

重定向从/资料夹到/苹果试试这个:

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

重定向于是重写只是结合上面的htaccess文件:

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

感谢您的帮助,但是当我在此测试时: 我试过这个site.com/folder1/login.php,但它并没有改写为site.com/apple/login.php 我得到的模式不是马赫 – sanders 2009-08-12 08:01:37

+0

@Josh :你的编辑RewriteRule ^/folder1(。*)?$/apple1 $ 1 [R]不起作用。 – sanders 2009-08-12 08:24:53

+0

这个重定向速度较慢吗?当重定向发生时,与非重定向版本比较? – Miguel 2016-01-14 10:48:29