.htaccess重写到未安装的文件夹资源

时间:2013-02-14 07:39:18

标签: apache .htaccess mod-rewrite redirect external

我试图在apache服务器上使用.htaccess文件指向/ cmsfiles / flipbooks / thisFlipBook / to / thisFlipBook

我试过了:

RewriteRule ^/thisFlipBook/ /cmsfiles/flipbooks/thisFlipBook[L,R=302]

以及:

RewriteRule ^/thisFlipBook/cmsfiles/flipbooks/thisFlipBook[L] 

(没有R标记,因此mod_rewrite知道它的内部apache重定向,而不是让浏览器发送重写资源的新请求。)

第一条规则产生404,第二条规则产生:

/thisFlipBook/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/

但是,如果您手动导航到/ cmsfiles / flipbooks / thisFlipBook,它会设法找到index.html文件并成功加载它。

我做错了吗?

另外:服务器端apache重定向和卸载文件夹是正确的做法吗?客户开始请求这么多的翻书,我们已将它们移出项目以进行部署。

1 个答案:

答案 0 :(得分:0)

也许这就是你所需要的:

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^thisFlipBook/?  cmsfiles/flipbooks/thisFlipBook  [R=301,L,NC]

永久重定向

http://example.com/thisFlipBook

要:

http://example.com/cmsfiles/flipbooks/thisFlipBook

假设所有字符串都是固定的。

但是,如果thisFlipBook不是固定字符串,请将重写规则替换为此字符:

RewriteRule ^([^/]+)/?  cmsfiles/flipbooks/$1  [R=301,L,NC]

对于内部映射,请从R=301中删除[R=301,L,NC]