我有一个位于example.com/cmsFolder
的网站,我想转移到example.com/newFolder
。我无法手动移动它,因为它完全打破了这个愚蠢的CMS。
所以我正在尝试使用mod_rewrite
来掩盖文件夹名称并保持它看起来不错。
RewriteEngine on
RewriteRule ^cmsFolder/(.*)$ /newFolder/$1 [L]
404失败了。如何屏蔽文件夹名称? :/
答案 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]