1

私はスクリプトに取り組んでおり、www.mysite.com/signup などのリンクを作成したいと考えています。登録用のこのリンク。www.mysite.com/user/username およびユーザーのプロファイルへのこのリンク。PHP拡張子なしのリンク。また、誰かが www.mysite.com/signup.php などのリンクをリクエストした場合、彼を www.mysite.com/signup にリダイレクトする必要があります。

.my .htaccess

RewriteEngine On
RewriteRule ^/?([a-z]+)$ $1.php [L]

これで、すべてのリンクが正常に機能しますが、www.mystie.com/profile/username などのユーザーのプロファイルにアクセスすると

このエラーが発生します

オブジェクトが見つかりません!

要求された URL はこのサーバーで見つかりませんでした。URL を手動で入力した場合は、スペルを確認してからもう一度お試しください。

これがサーバー エラーであると思われる場合は、ウェブマスターに連絡してください。

エラー404

私の質問: そのリンクが正常に機能するようにするには、どのコードを追加すればよいですか?

ありがとうございました

4

3 に答える 3

1

盲目的にphpファイルにリクエストをルーティングしますが、これはあなたの問題とは何の関係もありません:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^/?([a-z]+)$ $1.php [L]

ここで、プロファイルをルーティングするためのルールを追加する必要があります。ルールがないため、プロファイル リンクが機能しません。したがって、次のようになります。

RewriteRule ^/?profile/(.*)$ /profile.php?username=$1 [L]

profile.phpプロファイルを生成するスクリプトに置き換えusername=、スクリプトがユーザー名を探す _GET パラメータに置き換えます。

于 2012-10-04T19:35:55.583 に答える
1

わかりました私は問題を解決しました

私を助けようとしたすべての人、特にジョン・リンに感謝します:)

これがコードです

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

私のプロフィール.php

$username = $_GET['username'];

$info = fetchUserInfo($username);

echo $info['username'];
echo $info['userid'];

また、同じ問題を抱えている一部の人々を助けることを願っています

于 2012-10-06T00:52:58.850 に答える
0

'RewriteLog' と 'RewriteLogLevel' の 2 つのディレクティブについて、mod_rewrite のマニュアルを参照してください。これらを使用して、ログ ファイル内のすべてのステップを確認することで、書き換えエンジンが要求を処理する方法を理解できます。

于 2012-10-04T14:06:21.337 に答える