2009-05-23 17 views
0

実際に~name/how.phpの代わりに~name/howを実行します。.htaccess/mod_rewrite

私は.htaccessファイルに次の変更を行っています

# If the requested URI does not contain a period in the final path-part 
RewriteCond %{REQUEST_URI} !(.[^./]+)$ 
# and if it does not exist as a directory 
RewriteCond %{REQUEST_fileNAME} !-d 
# and if it does not exist as a file 
RewriteCond %{REQUEST_fileNAME} !-f 
# then add .html to get the actual filename 
RewriteRule (.*) $1.php [L] 

しかし、それはのように実行します:

~name/~name/how 

を、すべてのリンクでそれがURLの元に~nameを追加されますクリックしてください。 http://ip/~name/~name/~name/serach

.htaccessで何が間違っているか教えてください。

答えて

1

絶対パスではなく相対パスを使用しています。あなたのページは今あなたがパス〜名/にいると思います。あなたのページに<base href>を設定することができます。

あなたは、おそらく 'のDirectoryIndexにindex.php' これは役立つかもしれないものは何でも

を/whatever/index.phpへ/マップするために使用してこれを簡素化することができます:How to use apache's mod_rewrite rewriterule without changing relative paths

EDIT:短い答えを。メニューの絶対パスの使用を考慮する必要があります。あなたの相対的なパスは、2段階の深さでしか有効ではありません(つまり、〜laborfa2/search /)

あなたはまったく混乱しています。パスを適切に整理するために、非常に簡単なテストサイトを作成することを強くお勧めします。必要に応じて、絶対パスと相対パスを使用します。ちょうどあなたをもっと混乱させるので、ベースhrefを削除してください。いったん実行したら、再度書き直してみてください。相対パスは、書き換えによってパスの深さが変更された場合に更新する必要があります。

+0

実際、私はmod rewrite/htaccessで新しくなりました。 実際に変更する必要があるものを詳しく教えてください。 –

+0

これは要するに、これは書き換えの問題ではありません。あなたの変更は、HTMLファイルがサブパスの下にあるように見せて、HTML内の相対パスが間違った場所になるようにします。絶対的なものへの相対的なリンクを変更するか、(DirectoryIndexの提案のように)レイアウトを変更して、相対的なリソースが実際に見える場所になるようにすることができます。 – SpliFF

+0

こんにちは、このhttp://74.220.215.241/~laborfa2/をチェックして、どのように動作するのかをクリックしてください。しかし、 'Los Angeles'を右クリックするとエラーが発生します。 URLは http://74.220.215.241/~laborfa2/lf/main/com/search.php?area='Los Angeles ' –

0

これはURL解決の問題です。相対URLは常にベースで解決されます他に記載されていない場合、現在のリソースのURLであるURL。したがって、/~name/fooにあり、~name/bar(これは相対URLパスです)を指すリンクがある場合は、/~name/~name/barに解決されます。しかし、もしあなたが/~name/barを指していたら、すでに絶対URLパスであるので解決されません。

絶対URLパス(/で始まるURL)を使用するか、ベースURLを変更することで回避できます(BASE HTML elementを参照)。しかし後者は、相対URLパスで始まるURL参照だけでなく、相対URL参照にも影響します。