1

バニティ URL を許可する .htaccess ファイルを作成しました。ただし、インデックス ファイルを入力せずに www.website.com と入力することはできなくなりました。つまり、ホームページを見るには www.website.com/index.php と入力する必要があります。これは私の .htaccess ファイルがどのように見えるかです:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
RewriteRule ^(.*)$ http://www.website.com/profile.php?u=$1 [NC]

誰でもこれを修正する方法を知っていますか? 皆さん、ありがとうございました!

4

2 に答える 2

4

ルールを定義した方法により、複雑さが増しました。

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]

上記の規則は、ファイル名がそのままファイル処理のディレクトリである場合を意味します。その後、それ以上処理しないでください。

RewriteRule ^(.*)$ http://www.website.com/profile.php?u=$1 [NC]

このルールは、任意のリクエスト uri をマップすることを意味しますprofile.php?u=

これをリクエスト/するとwww.website.com、最初のルールがチェックされ、一致しません。次に、2 番目のルールをチェックし、それを にマップしprofile.php?u=ます。

  1. $_GET['u']それを修正する 1 つの方法は、 *if is empty または/in をチェックすることprofile.phpです。ある場合は、をロードしindex.phpます。
  2. もう 1 つの方法は、ユーザー名の適切な正規表現を見つけて、ここで使用することです。

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(USERNAME_REGEX)$ http://www.website.com/profile.php?u=$1 [NC,L]
    

これを処理する最善の方法は、PHP を使用することです。

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php?uri=$1 [L]

index.phpこれで、渡したすべての uri が取得されます。これで、URI を で処理できますindex.php

于 2012-12-09T03:56:20.220 に答える
2

サーバーの設定が原因である可能性があります。試してくださいDirectoryIndex index.phphttp://davidwalsh.name/directory-index-homepage-htaccessを参照)

編集(そもそも質問を正しく読んでいないため)

RewriteRule。*-[L]行なしで試してみましたか?

于 2012-12-09T03:23:02.920 に答える