【发布时间】:2012-09-16 05:36:34
【问题描述】:
我们有一个 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-basecamp.com 而不是 http://test-basecamp.com
所以.htaccess 不再重定向到 webroot 中的 init.php,我们在错误日志中收到 400 Bad Request 和“Invalid URI in request GET /en/ HTTP/1.1”
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 文件移动到 webroot 中,我会收到重定向循环错误。看到这个问题:stackoverflow.com/questions/12427371/…
标签: php apache .htaccess mod-rewrite redirect