2010-02-11 51 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]