0
したがって、私はURLをよりきれいにするためにいくつかのmod_rewriteルールを持っています。Apache VirtualHost URLの抽象化
http://test.domain.com/test.php?client=test&page=cheese/wine
PS::などのtest.phpを向けてバックグラウンド協会に
http://test.domain.com/cheese/wine/
:私は私のような入力されたURLを変更したいわけ。これにより
クライアント上の変数は実際には[test] .domain.comです。
書き換えログによれば、すべてのRewriteRuleは正常に動作しているように見えますが、私が得るのは400エラーです。
バーチャルホストのファイル:
<VirtualHost *:80>
ServerName *.domain.com
DocumentRoot /var/www/dir/
...
RewriteEngine on
# drop www. from subdomains
RewriteCond %{HTTP_HOST} ^www\.(.*)\.domain.com$
RewriteRule ^/?(.*)$ http://%1.domain.com/$1 [R=301]
# rewrite x.domain.com/abc to abc?client=x
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain.com$
RewriteRule ^/?(.*)$ $1?client=%1 [QSA]
RewriteRule ^/?(.*)$ test.php?page=$1 [QSA,L]
...
</VirtualHost>
誰がどんな考えを持っていますか?
編集:要求のホスト名(* .domain.com)が(。WWW)domain.comは異なる方法で処理されるため、そのまま滞在する必要があります。
にリダイレクトします。しかし、(www。)domain.comと* .domain.comは同じDocumentRootを指してはいけないので、何か別の解決策が必要です。他の仮想ホストは正しく設定され、動作しています。無限ループを回避する他の方法はありますか? – SineCosine
ハァッ?上記のループを防ぐためのソリューションを投稿しました。ドメイン名の場合は、必要に応じて古いRewriteCondをそのまま使用することができます。両方ともあなたの設定で同じことをする必要があります。 – Gerben