2

特定のパラメーターを特定のサブディレクトリにリダイレクトするために、偽のディレクトリを作成しようとしています。

From: www.example.com/username
  To: www.example.com/posts?uid=alex

From: www.example.com/p/1234
  To: www.example.com/posts?url=1234

これは、stackoverflow に関する同じ主題の残りの質問からのやや複雑な例であり、ほとんどの回答ではそれがどのように機能するかについて説明されていないため、これを解決する方法について結論を出すことができません。

4

2 に答える 2

3

試す:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^p/([^/]+)$ /posts?url=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ /posts?uid=$1 [L]

まず、すべてのリンクを次のようにする必要があります。

www.example.com/username
www.example.com/p/1234

上記の書き換えルールは/p/1234(via ^p/([^/]+)$) と/username(via ) に一致し、^([^/]+)$それらを内部的に/postsURI に書き換えます。これは外部リダイレクトであるため、ブラウザのロケーション バーの URL は変更されないことに注意してください。誰かがを入力www.example.com/posts?uid=alexすると、URL は変更されません。

于 2013-10-03T06:12:25.333 に答える
1

有効mod_rewriteにし.htaccessてからhttpd.conf、次のコードを DOCUMENT_ROOT/.htaccessファイルに入れます。

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

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^p/([^/]+)/?$ /posts?url=$1 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /posts?uid=$1 [L,QSA,NC]
于 2013-10-03T06:12:42.827 に答える