htaccess重定向到父目录 - 错误的请求

时间:2012-09-16 05:36:34

标签: php apache .htaccess mod-rewrite redirect

我们有一个htaccess文件来处理几个文件夹的漂亮链接。一些例子:

http://test.com/basecamp/en/foobar -> ../init.php?lang=en&request=foobar&site=basecamp
http://test.com/ravili/en/foobar   -> ../init.php?lang=en&request=foobar&site=ravili
http://test.com/ravili/ar/foo/bar  -> ../init.php?lang=ar&request=foo/bar&site=ravili

目录结构

/webroot
   init.php
/webroot/basecamp
   .htaccess
/webroot/ravili
   .htaccess

但是现在,我们尝试将文件夹移动到单个域中,因此我们将http://test.com/basecamp

而不是http://test-basecamp.com而不是.htaccess

因此Options +FollowSymlinks RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} !/(content|images|css|js|fonts|pdfs)/ RewriteRule /([^.]+\.(jpe?g|gif|bmp|png|css|js|eot|svg|ttf|ico|pdf))$ /$1 [NC,R,L] RewriteCond %{REQUEST_URI} !(content|images|css|js|fonts|pdfs)/.* RewriteRule !^[a-z]{2}/ /en/ [NC,L,R] RewriteCond %{REQUEST_URI} !/(content|images|css|js|fonts|pdfs)/ RewriteRule ^([a-z]{2})/(.*)$ ../init.php?lang=$1&request=$2&site=basecamp [L,QSA] 不再重定向到webroot中的init.php,我们在错误日志中得到400 Bad Request和'请求GET / en / HTTP / 1.1中的无效URI'

htaccess文件

{{1}}

那么我们如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

由于您已经有/的重写基础,因此规则目标的../部分会导致400错误请求(因为它试图遍历文档根目录的父目录)。从RewriteRule中删除../

RewriteRule ^([a-z]{2})/(.*)$ /init.php?lang=$1&request=$2&site=basecamp [L,QSA]