2016-04-08 10 views
0

現在のところ私はユーザーとのやりとりを含むウェブサイトを開発しています。私が正しく理解していれば、このコードは後に引数の「profile.php」を代入し

RewriteEngine on 
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?u=$1 
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?u=$1 

:私は、次のコマンドを持っているファイルの.htaccessとプロフィールページへのリンクにユーザ名のすべてを変換することができ信号 "?" URLが正規表現に一致する場合。しかし、私は "u = $ 1"がそれを達成する方法を理解していませんでした。なぜなら、 "u"は可変セッションではないからです。これは、セッション変数のためのPHPでの私の設定です:

$_SESSION["id"] = $id; 
$_SESSION["username"] = $username; 
$_SESSION["password"] = $pswd; 
$_SESSION["email"] = $email; 

私は、現時点では「FirstUser」のようなだけのユーザー名は、「最初のユーザー」のようなユーザー名を受け入れているので、正規表現で、あまりにもスペースを含めるしたいと思いますブラウザでエラーを出してください。

私はパターンにスペースを追加すると、私は、次のHTTP 500エラーが出る:

Server Error

+4

'u'は' $ _GET'変数です。 'echo $ _GET ['u']' –

+1

スペースを取得するには、パターンに空白を追加するだけです。 – AbraCadaver

+2

ここで最初の答えを確認してください:http://stackoverflow.com/questions/18233615/space-in-rewritecond – Miro

答えて

0

をご.htaccess設定

RewriteEngine on 
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?u=$1 
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?u=$1 

いるかもしれない、rewrite engineをロードするためにをしようとします許可されていない場合(この部分を最初に確認してください)、成功した場合は.htaccessファイルの構造とそのサブパスに等しい値に設定された変数uを使用して、HTTP GET要求でprofile.phpに変換します。

.htaccessファイルが/home/kasbah/public_htmlに住んでいるとhttp://foobar/~kasbahに対応する場合、ユーザはhttp://foobar/~kasbah/it-worksに行くときに、その後、彼らはhttp://foobar/~kasbah/profile.php?u=it-worksにリダイレクトされます。

あなたのPHPコードは、その変数に作用するために$_GET['u']のようなものを呼び出すことができます。

Escape spaces as %20。また、最終的な/をオプションにして唯一のRewriteRule持つことができます。

RewriteEngine on 
RewriteRule ^((?:[a-zA-Z0-9_-]|%20)+)/?$ profile.php?u=$1 
関連する問題