-1

いくつかのフォルダのきれいなリンクを処理するための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/basecamphttp://test-basecamp.com

そのため、.htaccessはWebルートのinit.phpにリダイレクトされなくなり、エラーログに400の不正なリクエストと「リクエストGET / en / HTTP/1.1の無効なURI」が表示されます。

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]

では、これをどのように解決するのでしょうか。

4

1 に答える 1

1

書き換えベースが/既にあるため../、ルールのターゲットの一部が 400 の不正な要求を引き起こしています (ドキュメント ルートの親ディレクトリを通過しようとしているため)。RewriteRule から を削除../します。

RewriteRule ^([a-z]{2})/(.*)$ /init.php?lang=$1&request=$2&site=basecamp [L,QSA]
于 2012-09-16T05:43:13.830 に答える