2011-11-15 7 views
0

を表示:のRewriteRule、URLが間違って私はmod_rewriteはに新しいですし、私はこの問題を抱えている

私はmod_rewriteをして作業リダイレクトしている、私の.htaccess:

RewriteEngine on 
RewriteRule ^microsite/([^/\.]+)/$ micrositecontroller.php?name=$1 [L] 

micrositecontroller.phpはテキストのみ

をエコー

ローカルホスト/プロジェクト/マイクロサイト/テスト/:私は私のURLを入力して、ブラウザ上で

私が望んでいたが、どこにリダイレクトしています私が入力したとき:

ローカルホスト/プロジェクト/マイクロサイト/テスト

それはまだ望んでいた場所にリダイレクトするが、URLは次のように次のようになります。

ローカルホスト/プロジェクト/マイクロサイト/テスト/?名=テスト

今私がしたいのは、 "/?name = test"が現れないことです。

私は正規表現のさまざまな組み合わせを試しましたが、役に立たないと私はそれが正常ではないのか分かりません。何か案が?

答えて

0

あなたの正規表現のハンドルはスラッシュので、あなたの正規表現ではスラッシュを持っている...それを削除します。

RewriteEngine on 
RewriteRule ^microsite/([^/\.]+)$ micrositecontroller.php?name=$1 [L] 
+0

私はそれを試みました。 localhost/project/microsite/test – Rishi

0

何がしたいことは次のとおりです。

RewriteEngine on 
RewriteRule ^microsite/([^/\.]+)/?$ micrositecontroller.php?name=$1 [L] 
# Note the "?"-------------------^ 

スラッシュで両方の終了に対応するためにスラッシュはありません。スラッシュ(またはオフ)のままにする問題は、Apacheがブラウザのリダイレクトを強制するため、ブラウザのロケーションバーに?name=testが表示されます。

これは、mod_dirとDirectorySlash on指示が干渉しているためです。 DirectorySlashディレクティブは、ディレクトリと思われるものにアクセスしたときにブラウザをリダイレクトするようにブラウザに指示します(場合によってはスモッシュURI以外のsmae URIへのlocalhost/project/microsite/test)。

+0

試してもまだ動作しませんでした:(コピー貼り付け) RewriteEngine on RewriteRule^microsite /([^/\ name = test] 。] +)/?$ micrositecontroller.php?name = $ 1 [L] "?name = test"はまだ表示されます。 – Rishi

+0

ドキュメントルートに '/ microsite/test'ディレクトリがありますか? ? –

+0

www docルートのファイル構造: プロジェクト>マイクロサイト>テスト> index.php、 プロジェクト> .htaccess、 プロジェクト> micrositecontroller.php これらは現在存在し、使用されている主なものです。 – Rishi

関連する問題