1

私は次の.htaccess設定を持っています

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteRule \.git - [F,L]

RewriteRule ^help help.php [L]
RewriteRule ^home home.php [L]
RewriteRule ^profile profile.php [L]
RewriteRule ^index index.php [L]

RewriteRule ^users/([0-9]+) profile.php?id=$1 [L]

RewriteRule ^([A-Za-z0-9-]+)?$ profile.php?u=$1 [L]

これで、誰かがランディング ページにアクセスするたびに、 の最後のルールを使用してリダイレクトされprofile.php?u=$1ます。

www.example.comwww.example.com/が profile.php ではなく index.php にマップされるように構成を変更するにはどうすればよいですか?

4

2 に答える 2

1

^indexルールの直後の空の文字列または単一のスラッシュに一致します。

RewriteRule ^help help.php [L]
RewriteRule ^home home.php [L]
RewriteRule ^profile profile.php [L]
RewriteRule ^index index.php [L]
# Match root request with optional slash
RewriteRule ^/?$ index.php [L]
于 2012-06-26T19:09:45.527 に答える
0

私はそれをこのようにしないことを提案します。

代わりに、これを使用するだけです

<IfModule mod_rewrite.c> 
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

これにより、すべてのリクエストがindex.phpページに送信され、そこからrouter.phpが作成され、phpを使用してそのページにリクエストが渡されます。

ただし、追加する場合は、

 RewriteRule ^/?$ index.php [L]

マイケルが提案したように。

必要に応じて、ルールをテストするための簡単なツールを次に示します。

ApacheRewriteRuleテスター

于 2012-06-26T19:26:34.937 に答える