0

ここに私のhtaccessがあります:

RewriteEngine On 
RewriteBase /

RewriteRule ^about$ about.php       
RewriteRule ^contact$ contact.php
RewriteRule ^user/([^/.]+)?$ user.php?uname=$1&%{QUERY_STRING}

私がやろうとしているのは、誰かが mysite.com/username に行くときです: user.php?uname=$1&%{QUERY_STRING} これは単に:RewriteRule ^/([^/.]+)?$ user.php?uname=$1&%{QUERY_STRING}

しかし、ユーザー名がページ名の場合はどうなるでしょうか? たとえば、ユーザー名が about の場合、または contact ? 例外を追加する方法はありますか? または、どうすればそれを処理できますか。

4

3 に答える 3

1

L (最後のフラグ) を使用していないため、問題を解決できます。代わりに次のコードを使用してください。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^about/?$ /about.php [L,NC] 
RewriteRule ^contact/?$ /contact.php [L,NC]
RewriteRule ^user/([^/]+)/?$ /user.php?uname=$1 [L,NC,QSA]
于 2013-03-25T11:06:16.487 に答える
1

最も簡単な解決策は、ユーザー名のブラックリストを作成することです。サイトの必要なページに一致するユーザー名を誰かが作成することを許可しないでください。現在のルールに [L] フラグを付けると、それ以上のルールの処理が停止するため、ユーザー名をキャッチする別のルールを一番下に追加するだけで済みます。

RewriteRule ^([^/.]+)?$ user.php?uname=$1&%{QUERY_STRING}

もちろん、ユーザー名をブラックリストに登録しなくても、システムは機能するはずです。/about URI は既に使用されているため、/user/about を使用するだけで済みます。

于 2013-03-25T09:18:51.860 に答える
0

たとえば、リダイレクトを使用できます

Redirect /about http://mysite.com/about.php

お役に立てれば。

于 2013-03-25T09:11:13.760 に答える