2011-09-17 13 views
0

私は自分のURLを「よりよく見える」ようにしようとしています。 x.com/reset-password/[email protected]の代わりに、私はx.com/reset-password/[email protected]にしてほしいhtaccessリダイレクトループ

mod_rewriteを使用して、私はピリオド(。)を含む文字列を除くすべての関連する文字列で動作します。 RewriteRuleステートメントでドットを許可すると、内部サーバーエラーが発生します。 Lフラグが適用されても、最後の1つの時刻を新しい宛先にリダイレクトしなければならないので、正規表現があまりにも寛大であるため、無限ループに入るからだと思います。

私はRewriteCondを使用して等号のあるURIをリダイレクトするのを止めようとしているので、無限ループの問題は解決していますが、正しく適用されていません。私は、私は推測する2つの解の1のために求めている:

RewriteRule ^([^.]+)$ ?email=$1 [L] 

:元の正規表現または

元の正規表現を評価されているから=にURIを停止する方法にピリオドを含めるためのいずれかの方法1を修正:

RewriteCond %{REQUEST_URI} ^[^=]+$ 
RewriteRule ^(.+)$ ?email=$1 [L] 

私は(私はそれらを読んで、最後の数時間を費やしてきた...)正規表現/ htaccessのチュートリアルの多くは、オンラインである知っているが、私はそれを把握するように見えることはできません。どんな助けもありがとう!

答えて

1

=QUERY_STRINGであるので、あなたが代わりにREQUEST_URIQUERY_STRINGを使用する必要があります。

RewriteCond %{QUERY_STRING} ^[^=]+$ 
RewriteRule ^(.+)$ ?email=$1 [L] 
+0

私は返事が遅れをお詫び申し上げますが、私は私が前に、他のミスをしていなかったことを確認したかったです応答する。この変化は違いがないようです。このファイルを使用すると、ディレクトリの後ろにあるものに関係なく、内部サーバーエラーが発生します。デフォルト設定で変更が必要なものはありますか?よりシンプルなソリューションはありますか?私は基本的にちょうどちょうど電子メールを追加したいと思う=何でも言い、リダイレクトを止める。 – Jack

関連する問題