2011-01-05 2 views
0
私はこれは本当に簡単な .htaccessファイルと私の問題を見つけることができないよう

表示:もう一度:.htaccessファイル - RewriteRulesが作業していて、ブラウザのアドレスバーには、フル(無愛想)URL

Options -Indexes 
Options +FollowSymLinks 
RewriteEngine on 
RewriteBase /d/ 
`#`drupal style url rewriting 
RewriteRule ^([^.]*)$ index.php?path=$1 [L] 

それが意図作品としてスラッシュのないルートURL以外のすべて。だから、書き換え、?path= (blank)しかしlocalhost/d作品として?path=x/y/zとしてlocalhost/d/x/y/zlocalhost/d/のための私のページへの隠されたGETクエリ文字列を渡しますが、今、この醜い怪物としてアドレスバーに表示されます。

http://localhost/d/?path=/Users/audiozoom/Documents/webroot/d 

何が問題だろうか?

答えて

0

上部ルールに条件付きルールを追加することで修正されました。

RewriteCond %{REQUEST_URI} /d$

RewriteRule ^.*$ index.php [L]

しかし、今、私は私のhtaccessで二度ベースフォルダを持っているので、私はそこにすべてのことを好きではありません。たぶん誰かがより良い解決策を見つけるでしょう。

0

ルールの最後に[QSA]を追加してみてください。これは静かにクエリ文字列全体を渡します。

+0

が機能しませんでした。この全体的な照会はあまりにも奇妙です。通常、サイトルートのパスの後ろにすべてが表示されます。 –

0

PHPコードがリクエストをリダイレクトしないようにしてください。書き換えルールにはindex.php?path=と表示されますが、表示されるURLは?path=です。これは、リダイレクトによって引き起こされる可能性があります。

+0

ありがとう、私は2つのファイルだけを持つテストフォルダを持っています:上記のコードとindex.phpを持つ.htaccess 'echo 'パスは唯一の行です:" $ _ GET [' path ']; 'あなたの提案は当てはまりません。 –

関連する問題