1

この2つのコードの間に問題があります

#----------------------------------------------------------------------
# Hide File Extentions
#----------------------------------------------------------------------
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

#-----------------------------------------------------------------------
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?username=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?username=$1 [L]
#-----------------------------------------------------------------------
#-----------------------------------------------------------------------
RedirectMatch 301 ^/buzz/(.*)$ http://buzz.perghhh.com/$1
#-----------------------------------------------------------------------
RewriteRule ^buzz/([^/]*)$ /buzz.php?buzz=$1 [L]

http://example.com/buzz/17のような URL を入力する と、プロフィール ページに移動するように動作します。

4

2 に答える 2

0

リンクされた完全な htaccess には、次のリダイレクトがあります。

RedirectMatch 301 ^/buzz/(.*)$ http://buzz.perghhh.com/$1

へのリダイレクトは、完了後に/$1汎用ルールによっても照合されます。([a-zA-Z0-9_-]+)リライトもあるので^buzz/([^/]*)$、以前のものRedirectMatchは存在しないようです。を一致させたい場合はbuzz/xxxx、 のみを使用し、 は使用RewriteRuleしませんRedirectMatch

さらに、Apache の書き換えルールは最初の一致で処理されるためbuzz/、その後に何もない場合は一般的なprofile.phpルールと一致します。一般的なルールの上に移動するだけです。常に特定のルールを一般的なルールの前に置きます。

RewriteEngine On
RewriteRule ^buzz/([^/]*)$ /buzz.php?buzz=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/?$ profile.php?username=$1 [L]

profile.phpまた、オプションの末尾/に with/?を最初のルールに追加するだけで、2 番目のルールを置き換えました。

于 2013-01-19T02:44:03.910 に答える
0

順番変えるだけ

RewriteEngine On
RewriteRule ^buzz/([^/]*)$ /buzz.php?buzz=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?username=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?username=$1 [L]

[L] で行を終了します。これは、これが (L)ast ルールになり、^([a-zA-Z0-9_-]+)$より包括的で、バズも含まれることを意味します。

于 2013-01-19T02:44:25.213 に答える