0

私は自分のサイトの htaccess を機能させるのに苦労しています...しかし、うまくいきません..

以下はコードです

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   RewriteEngine On
   RewriteBase /
   RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
   RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d 
   RewriteRule ^([^/]+)/?  /profile.php?username=$1 [L,NC]
 </IfModule>

これは問題なく正常に動作します..しかし、何かを追加すると動作しません..次の場合-

1) たとえば、example.com/dinesh と入力すると、www.example.com にリダイレクトされます (常にホームページではなく、www.example.com/dinesh にしたい)

2)今、2つのパラメーターを持つ別のusers.phpがあります.1つのパラメーターを渡すと、このルールprofile.phpを実行する必要がありますが、2つのパラメーターを渡すと、user.phpに移動する必要があります。多くの組み合わせを試しましたが、これ動かない。

専門家が私に少なくともいくつかのヒントを与えることができれば、それは素晴らしいことです.

4

1 に答える 1

0

1)に関しては、おそらく上記のルールとは関係ありません。存在する場合/dineshは、そこを調べる必要があります。存在しない場合は、を調べる必要があり/profile.phpます。おそらくそれがホームページにリダイレクトされている原因です。

2)に関しては、あなたのルール:

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

URI:/something/elseに一致します。これは、正規表現に文字列の終わりの一致がないためです。最初の と一致し、somethingそれで十分です。末尾にa を追加する$と、一致しません/something/else

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

または、プロファイルにルーティングするルールのuser.php 前に、ルーティングする他のルールを配置できます。しかし、持っている方が良い$です。

于 2012-10-25T02:53:05.783 に答える