0

私はこの.htaccessファイルを持っています:

Options +FollowSymlinks
RewriteEngine On

RewriteRule ^([a-zA-Z0-9_-]+)$ profil.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/$ profil.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/galerie$ galerie.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/galerie/$ galerie.php?user=$1 [NC]
RewriteRule ^(.*)/galerie-(.*)_(.*)$ galerie_poze.php?user=$1&album=$2&page=$3 [NC]
RewriteRule ^(.*)/galerie-(.*)_(.*)/$ galerie_poze.php?user=$1&album=$2&page=$3 [NC]
RewriteRule ^(.*).php?$ index.php?request=$1 [QSA,L]

そしてそれはうまくいかないようです。

これが私の問題です。たとえばsite.com/test.php、自分のサイトのページにアクセスしたい場合、にリダイレクトされindex.php?request=testます。問題は、通過したくない「profil.php」と「galerie.php」もあることですindex.php。代わりに、これを行うとき:site.com/username/profil、を指すようにしたいのですが、機能しませんprofil.php?user=username

助言がありますか?

4

3 に答える 3

1

私はこのようなものを置きました:

RewriteCond %{REQUEST_URI} !^(.*)\.php?$ 
RewriteRule ^(.*)\.php?$ index.php?request=$1 [QSA,L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ profil.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/$ profil.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/personal$ personal.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/personal/$ personal.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/galerie$ galerie.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/galerie/$ galerie.php?user=$1 [NC]
RewriteRule ^(.*)/galerie-(.*)_(.*)$ galerie_poze.php?user=$1&album=$2&page=$3 [NC]
RewriteRule ^(.*)/galerie-(.*)_(.*)/$ galerie_poze.php?user=$1&album=$2&page=$3 [NC]

/usernameまたは/username/ profileを実行すると機能しますが、最初のルールIDでは機能しなくなります。sitename.tld/test.phpを実行しても機能しません。

于 2012-07-15T08:53:40.177 に答える
0

最初の 2 つのルールのいずれかを一致させる必要があります[username]/profil(一致する場所[username][username]/)

試す

RewriteRule ^([a-zA-Z0-9_-]+)/profil$ profil.php?user=$1 [NC, L]
于 2012-07-13T19:42:38.680 に答える
0

条件を使用します。

ファイルまたはディレクトリが存在しないことを確認します。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

次のようなものを使用してリダイレクトを制限することもできます。

RewriteCond %{REQUEST_URI} !^/profil\.php$ [NC]

きちんと逃げるようにしましょう。これはエスケープする必要があります:

RewriteRule ^(.*).php?$ index.php?request=$1 [QSA,L]

お気に入り:

RewriteRule ^(.*)\.php?$ index.php?request=$1 [QSA,L]

また、

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

次のように簡略化できます。

RewriteRule ^([a-zA-Z0-9_-]+)/?$ profil.php?user=$1 [NC]
于 2012-07-13T19:42:42.987 に答える