2012-02-08 14 views
0

私は..プロフィールページを示しリンクhttp://mysite.com/mynameを持っているが、私は複数のhtaccessを使用してURLにドメイン名の後に複数のスラッシュを付ける方法は?

http://mysite.com///mynameのようにスラッシュを使用している場合、それはまたページを示してい..

私のhtaccessのコードは次のとおりです。

RewriteCond %{REQUEST_URI} ^/(\w+)/?$ [NC] 

RewriteRule^profile.php?username=%1 [L,QSA] 

この問題を避けるには?

誰かが私を助けることができますか?

+0

あなたの '.htaccess'にいくつかの悪い書き換えがあります。 – ThinkingMonkey

+0

問題は何ですか? –

+0

私のhtaccessコードは:RewriteCond%{REQUEST_URI}^/(\ w +)/?$ [NC] RewriteRule^profile.php?username =%1 [L、QSA] ..何か間違っていますか? – Micku

答えて

0

あなたが本当に複数のスラッシュをブロックしたいが、ここでそれを行うための方法ですなぜわからない:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC] 
RewriteRule^- [L,F] 

これは禁断のエラーを与えるだろうが、URIが///mynameが生成されますように開始時に複数のスラッシュを持っています:

禁止あなたはこのサーバー上の/ MYNAMEにアクセスする権限がありません

+0

それは働いていません:( – Micku

+0

うん、私はそれを適切にテストした後に投稿しました。あなたの質問に完全な.htaccessを投稿できますか?(コメントではありません) – anubhava

+0

ohh sry .. – Micku

0

複数のスラッシュを1つのスラッシュとして処理しないようにするには、次のように追加します(これはデフォルトのApache動作で、バグや書き換えの悪い結果ではないようです)。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /[^/\s]+\ HTTP 

これはシングルスラッシュルールを強制する必要があります。もちろん、これにより、http://example.com/myname/editのようなものを使用することも不可能になりますが、必要に応じてより複雑な正規表現を使用することで回避できます。

+0

それは私のために働いていません.. – Micku

+0

あなたは**あなたの他のRewriteCondの前にこれを加えるべきです**。それがうまくいかない場合は、@ anubhavaの答えか私の答えがうまくいくので、私は解説がありません。 –

0

このコードを使用して、URLから二重引用符を削除します。

RewriteEngine On 
RewriteBase/
RewriteCond %{THE_REQUEST} // 
RewriteRule^$0 [R=302] 

これを機能させると、302から301に変更されます。