2011-12-29 20 views
0

私はURL http://mysite.com/communityに行くと、ページが見つからないことを示すウェブサイトがあります。しかし、URL http://mysite.com/community/はページを正しく表示します。コミュニティの後に "/"の書き換えを設定するにはどうすればよいですか?.htaccess書き換えルール/

これは私の存在の.htaccessです:

Options +FollowSymLinks 
Options +Indexes 
RewriteEngine On 

RewriteRule ^admin$ Admin/index.php?qstr=$1 [L] 
RewriteRule ^(.*)/$ index.php?qstr=$1 [L] 

これらは、私が試したものでしたが、まず

RewriteRule ^(.*)/community $1/community/ [L] 

秒を、失敗した

RewriteRule /community /community/ [L] 

すべて異なる[L]の有無にかかわらず、 Apache URL Rewrite Guideから

+0

最後のものを使用しますが、先行する '/' – Gerben

+0

/communityはindex.phpに移動していませんか?qstr = community? – potNPan

+0

私はそれを綴る必要があるようです。だから 'RewriteRuleコミュニティ/コミュニティ/ [L]' – Gerben

答えて

0

すべてのウェブマスターがディレクトリを参照するURLの最後のスラッシュの問題についての歌を歌うことができます。

末尾には問題 説明をスラッシュ。それらがない場合、サーバーは/〜quux/foo /の代わりに/〜quux/fooと言うと、サーバーはfooという名前のファイルを検索するので、サーバーはエラーをダンプします。そしてこのファイルはディレクトリなので、それは不平を言う。実際にはほとんどの場合、それ自体を修正しようとしますが、時にはこのメカニズムをあなたがエミュレートする必要があります。たとえば、あなたはCGIスクリプトなどに複雑なURLの書き換えの多くを行った後

ソリューション:

この微妙な問題を解決するには、サーバーが自動的に末尾にスラッシュを追加できるようにすることです。これを正しく行うには、外部リダイレクトを使用する必要があります。そのため、ブラウザーは後続のイメージなどを正しく要求します。内部書き換えを行っただけの場合は、ディレクトリページでのみ機能しますが、ブラウザはインラインオブジェクトを要求するため、相対URLを使用します。例えば、/~quux/foo/index.htmlにあるimage.gifの要求は、外部リダイレクトなしで/~quux/image.gifになります。

ので、このトリックを行うために、我々は書く:

RewriteEngine

でRewriteBase /〜quux/

のRewriteRule ^のfoo $ fooの/ [R]

狂気と怠け者は、homedirの最上位の.htaccessファイルで次のことを行うこともできます。しかし、これにより処理オーバーヘッドが発生することに注意してください。

でRewriteBase /〜quux/

するRewriteCondの%{REQUEST_FILENAME}に

RewriteEngineは

するRewriteRule ^を(-D。+ [^ /])$ $ 1/[R]

0

まあ、上記のすべての解決策と私自身のいくつかを試した後、ついにこれを解決しました。私はこれが完全な解決策ではないと確信していますが、当面は解決しています。

解決方法:ルートフォルダに "community"という名前の空のディレクトリを作成しました。それでおしまい!

しかし、私はまだこれに対する実際の解決策を検討しています。

関連する問題