Apache URL重写 - 试图掩盖文件夹名称

时间:2010-02-11 06:40:24

标签: .htaccess mod-rewrite

我有一个位于example.com/cmsFolder的网站,我想转移到example.com/newFolder。我无法手动移动它,因为它完全打破了这个愚蠢的CMS。

所以我正在尝试使用mod_rewrite来掩盖文件夹名称并保持它看起来不错。

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

404失败了。如何屏蔽文件夹名称? :/

4 个答案:

答案 0 :(得分:4)

试试这个,它适用于我将此规则添加到Apache的主配置文件中:

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

我想你在cmsFolder之前忘记了第一个斜线。如果你想查看mod_rewrite日志:

RewriteLog "_PATH_TO_YOUR_\rewrite.log"
RewriteLogLevel 9

由于Paolo注释.htacces中不允许使用日志指令。容易理解为什么: - )

修改

如果您想屏蔽请求,可能会使用[P]修饰符(代理):

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

答案 1 :(得分:1)

更简单的解决方案可能只是将新文件夹符号链接到cms文件夹

ln -s cmsFolder/ newFolder

如果您没有shell访问权限,也可以创建一个简短的PHP script

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

答案 2 :(得分:0)

如果您想在/newFolder/…内部重写/cmsFolder/…的请求,则需要反过来:

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

答案 3 :(得分:-1)

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