2009-08-12 113 views
21

我想知道是否有可能使用.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

回答

33

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

5

嘗試:

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