2010-02-11 47 views
3

我有一個網站位於example.com/cmsFolder,我想搬到example.com/newFolder。我無法手動移動它,因爲它完全打破了這個愚蠢的CMS。Apache URL重寫 - 試圖掩蓋文件夾名稱

所以我試圖用mod_rewrite來掩蓋文件夾名稱並保持它看起來不錯。

RewriteEngine on 
RewriteRule ^cmsFolder/(.*)$ /newFolder/$1 [L] 

404失敗,怎樣才能掩蓋文件夾名? :/

回答

4

試試這個,這對我的作品,同時增加這一規則,以Apache的主配置文件:

RewriteEngine on 
RewriteRule ^/cmsFolder/(.*)$ /newFolder/$1 [L] 

我想你忘記了第一個斜槓前cmsFolder。如果你想看看mod_rewrite的日誌:

RewriteLog "_PATH_TO_YOUR_\rewrite.log" 
RewriteLogLevel 9 

正如保羅·評論日誌指令不能在.htacces不允許的。很容易理解爲什麼:-)

編輯:

也許,如果你想掩蓋你將使用請求[P]修飾符(代理):

RewriteEngine on 
RewriteRule ^/cmsFolder/(.*)$ /newFolder/$1 [P] 
+0

尼斯。我不知道有一個「RewriteLog」指令。這當然比猜測和檢查方法更好。 – jamieb 2010-02-11 07:36:19

+1

請注意,日誌指令只能在.conf文件中執行,它們不能在.htaccess文件中使用。 – Paolo 2010-02-11 09:22:37

+0

謝謝,我從來沒有使用.htaccess文件,因爲我只是將Apache用於個人目的。如果您同意,我將使用此信息修改我的回覆:-) – sourcerebels 2010-02-11 09:24:51

0

如果你想重寫請求/newFolder/…內部到/cmsFolder/…,你需要去其他方式輪:

RewriteEngine on 
RewriteRule ^newFolder/(.*)$ /cmsFolder/$1 [L] 
1

一個更簡單R染料溶液可能只是給newFolder符號鏈接到cmsFolder

ln -s cmsFolder/ newFolder 

或者你可以創建一個簡短的PHP script如果你沒有shell訪問:

<?php symlink('cmsFolder','newFolder'); ?> 
+0

不錯的解決方案。您需要在Apache配置中放置'Options FollowSymLinks'。如果不是這種解決方案將無法工作。 +1。 – sourcerebels 2010-02-11 09:30:58

+0

是的,謝謝你的糾正 – Paolo 2010-02-11 09:34:14

-1
RewriteEngine on 
RewriteCond %{REQUEST_URI} !^subfolder/login 
RewriteRule ^login/(.*)$ subfolder/login/$1 [L]