0

ユーザーがユーザー名を登録できるログインインターフェイスを作成しました。ここで、各ユーザーに example.com/user のようなバニティ URL を付与したいと考えました。そのために .htaccess 書き換え条件と php を使用しています。example.com/chat/xxのような URL を試してみると、「xx」ID のプロフィール ページが表示されます。代わりに、404ページをスローする必要がありました(それが私が望んでいることです)。ユーザーが「example.com/xyz/user」のようなサブディレクトリにない「example.com/user」を入力した場合にのみ、バニティ URL が機能するようにします。これは可能ですか?

htaccess --

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.php -f [OR]
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^([^\.]+)$ $1.php [NC]
RewriteCond %{REQUEST_FILENAME} >""
RewriteRule ^([^\.]+)$ profile.php?id=$1 [L]

使用した PHP --

if(isset($_GET['id']))
// fetching user data and displaying it
else
header(location:index.php);
4

1 に答える 1

1

/次に、スラッシュのみを使用せずに URL パスで一致させる必要があります

RewriteEngine on
RewriteRule ^/?([^/\.]+)$ profile.php?id=$1 [L]

この正規表現は、ドットのない^([^\.]+)$ものすべてに一致します。.

  • a
  • bcd
  • こんにちは元気ですか
  • チャット/xx

しかし、それは一致しません

  • test.php
  • こんにちは世界
  • チャット/xx.bar

これ^/?([^/\.]+)$は、スラッシュも許可しないことを除いて、同じように機能し/ます。つまり、ドット.またはスラッシュのいずれかを含む、URL パスを除くすべてを許可します/

Apache の正規表現の詳細については、用語集 - 正規表現 (Regex)およびRewrite Intro - 正規表現を参照してください。

于 2013-03-05T16:53:09.200 に答える