我想知道是否可以使用.htaccess
来重写文件夹名称。
我的意思是这个。
假设我有一个网址:
www.site.com/folder1/page.php
现在我想将网址重写为(例如)
www.site.com/apple/page.php
folder1是我的网站空间上的现有文件夹。
重要:“apple”不是文件夹而只是名称!
好的,这是一步一步的计划:
www.site.com/folder1/login.php
www.site.com/apple/login.php
这意味着apple
只是一个名称而不是目录。所有代码都应该来自folder1。苹果应该只是folder1
的别名。我不能只将folder1
重命名为Apple
。因此,我只需将folder1
重写为apple
。
答案 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]