.htaccess Apache URL重写-尝试屏蔽文件夹名称

.htaccess Apache URL重写-尝试屏蔽文件夹名称,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我的网站位于example.com/cmsFolder,我想将其移动到example.com/newFolder。我不能手动移动它,因为它完全破坏了这个愚蠢的CMS 因此,我尝试使用mod_rewrite来屏蔽文件夹名称并保持其外观美观 RewriteEngine on RewriteRule ^cmsFolder/(.*)$ /newFolder/$1 [L] 用404就不行了。如何屏蔽文件夹名称?:/ 试试这个,当我将这些规则添加到Apache的主配置文件时,它对我有效: RewriteE

我的网站位于
example.com/cmsFolder
,我想将其移动到
example.com/newFolder
。我不能手动移动它,因为它完全破坏了这个愚蠢的CMS

因此,我尝试使用
mod_rewrite
来屏蔽文件夹名称并保持其外观美观

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

用404就不行了。如何屏蔽文件夹名称?:/

试试这个,当我将这些规则添加到Apache的主配置文件时,它对我有效:

RewriteEngine on
RewriteRule ^/cmsFolder/(.*)$ /newFolder/$1 [L]
我想你忘了cmsFolder之前的第一个斜杠。如果您想查看mod_重写日志:

RewriteLog "_PATH_TO_YOUR_\rewrite.log"
RewriteLogLevel 9
.htacces中不允许使用As Paolo注释日志指令。易于理解的原因:-)

编辑:

如果要屏蔽请求,可能需要使用[p]修饰符(代理):


如果要将对
/newFolder/..
的请求在内部重写为
/cmsFolder/..
,则需要采用另一种方式:

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

一个更简单的解决方案可能只是将newFolder符号链接到cmsFolder

ln -s cmsFolder/ newFolder
或者,如果您没有shell访问权限,可以创建一个简短的:

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


不错。我不知道有一个“重写日志”指令。这当然比猜测和检查方法要好。注意,日志指令只能放在.conf文件中,它们不允许放在.htaccess文件中。谢谢,我从不使用.htaccess文件,因为我只是出于个人目的使用Apache。如果您同意,我将使用此信息修改响应:-)当.htaccess文件中使用mod_rewrite时,在测试规则之前,将从URL路径中删除本地路径前缀。根目录的本地路径前缀为
/
。这意味着所有模式都必须在没有路径前缀的情况下写入。所以tab的模式实际上是正确的,很好的解决方案。您需要在Apache配置中放置“Options FollowSymLinks”。如果不是这样,这个解决方案就行不通了+1.
<?php symlink('cmsFolder','newFolder'); ?>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^subfolder/login
RewriteRule ^login/(.*)$ subfolder/login/$1 [L]