5

現在、次のルールで設定された .htaccess ファイルがあります。

RewriteRule ^([a-zA-Z0-9_-]+)$ user\.php?user=$1 [L]

これは期待どおりに動作します: mysite.com/joemysite.com/user.php?user=joeになります

可能性のあるユーザー名にピリオドを含めるように正規表現を変更するにはどうすればよいですか?

たとえば、 mysite.com/joe.bloggs を mysite.com/user=joe.bloggsに移動したい

現在、これにより 404 ページの欠落エラーが発生します。

試してみ^([a-zA-Z0-9\._-]+)$ user\.php?user=$1 [L] ましたが、これにより内部エラー 500 が生成されます (これは無限ループが原因だと思います: ユーザーが指定されていない場合、user.php はホームページにリダイレクトするように設計されています)。

私はこれらすべてにかなり慣れていません(特に正規表現)。助けてくれてありがとう!

4

2 に答える 2

1

まず、要求されたURLがファイルまたはフォルダーではないかどうかを確認します。これにより、次のようなURLのリダイレクトループが防止されます/user.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-.]+)$ user.php?user=$1 [L,QSA]
于 2012-06-23T18:48:58.377 に答える
1

.キャラクタークラス内では特別な意味はないので、エスケープする必要はありません。

それでも問題が解決しない場合はdie("Test")、の先頭に正しく配置してみてくださいuser.php。これにより、エラーがリライトによるものなのか、PHPファイルによるものなのかを確認できます。

于 2012-06-23T18:37:40.413 に答える