2012-01-06 13 views
1

私はMVC PHPアプリケーションで作業しています。htaccessとurlリダイレクト

私の.htaccess:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.+)$ /mvc/index.php?url=$1 [QSA,L] 

私のindex.php:

<?php 

$url = $_REQUEST['url']; 

echo $url; 

だから私は、URLに(mysite.com/mvc/help)のようなもの、PHPの印刷物(助けを書きます)をメインページに表示します。 (mysite.com/mvc/index/log)が返す(index/log)のようなURLに書いたものはすべてうまく動作しますが、mysite.com/mvc/indexを書くとエラーはなくなりますが何も表示されず、$ urlは設定されていません!

私はそれを正しく説明したいと思う。 乾杯。

編集:私はミスをしました。(mysite.com/mvc/index/log)は何も返しません。最初の単語が "索引"の場合、URLがmysite.com/mvc/log/indexのように動作し、それが動作して返される(log/index)場合、それは機能しません。

また、URLが(mysite.com/mvc/index/logまたはmysite.com/mvcのように)空の配列を返すindex.php(print_r($ _ GET);)の行を追加しました。/index)、それが助けることができるなら...

少しの調査の後で私は "index"という単語が ".html"または ".php"で自動完成していると私は知らないどのようにそれを取り除くために...ソリューション


Options -Indexes +FollowSymLinks -Multiviews 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.*)$ /mvc/index.php?url=$1 [L] 
:ここに 私のhtaccess取り組んでいます
+0

3番目のRewriteCondですか?私はいつも!-dと!-fを使っていますが、前には見たことがありません!それは何ですか? –

+0

!-dは「フォルダではありません」、!-fは「ファイルではない」、!-lは「リンクではない」です。 私はそれを試してみましたが、私は同じ問題があります。 – M4MM0N

答えて

1

私はそれを動作させる方法を発見しました[OK]を、私はこの行を必要とするように、それはそうです:

Options -Indexes +FollowSymLinks -Multiviews 
0

これにそれを変更してみてください:

RewriteRule ^mvc/(.+) /mvc/index.php?url=$1 [QSA,L] 

とあなたの$_REQUEST$_GETに変更します

$url = $_GET['url']; 
+0

私はそれらの変更を試してみましたが、それでも同じですが、なぜ "indexe"や "inde"では "index"で動作しないのかわかりません。 – M4MM0N

+0

これは、2番目のRewriteCondが 'index'が存在するファイルであることを発見したためです。私は最初のRewriteCondを保持し、他の2つを取り除きます。 – Grexis

+0

私は他の2つの条件を取り除こうとしましたが、理由は分かりませんでしたが、 "500 Internal Server error"が発生しました。 – M4MM0N

関連する問題