特定のページのapache rewriteルールの問題

.htaccessのリダイレクトに問題があります。私がタイプするとき:

http://www.domain.com/contact

それはcontact.phpではなくindex.phpに行きます

ここに私の.htaccess:

Redirect 301 /clients http://clients.domain.com

RewriteEngine On
SetEnvIf Host ^www\. page=www
SetEnvIf Host ^mob\. page=mobile

RewriteBase /
SetEnvIfNoCase User-Agent "^Wget" bad_bo
#etc ... 
Deny from env=bad_bot

RewriteCond %{HTTP_HOST} !^www.domain.com
RewriteRule (.*) http://www.domain.com/$1 [R=301]

RewriteRule ^about/?$ about.php 
RewriteRule ^contact/?$ contact.php 

rewriterule ^(.*)$ index.php?subdomain=%{ENV:page}&page=$1 

私のPHPで私は得る:

<?php

print_r($_GET);
Array (
  [subdomain] => www
  [page] => contact.php
) 

私は何が欠けていますか?

14
あなたの最終的な '/'連絡先の後にあなたの行方不明
追加された 著者 Toby Allen,
@TobyAllen /?にルールが使用するかどうかの疑問符
追加された 著者 eric,

2 答え

このルールを試してください:

RewriteCond %{HTTP_HOST} !^www.domain.com [NC]
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]

RewriteRule ^about/?$ about.php [NC,QSA,L]
RewriteRule ^contact/?$ contact.php [NC,QSA,L]

rewriterule ^([a-z0-9]+)$ index.php?subdomain=%{ENV:page}&page=$1 [NC,QSA,L]

最後のルール [L] が一致する場合は実行され、一致しない場合は [NC] が実行されるように NC、QSA、クエリ文字列の追加 [QSA]

17
追加された

aboutおよびcontactルールは、次のように書き直す必要があります。

RewriteRule ^about/?$ about.php [L,QSA]
RewriteRule ^contact/?$ contact.php [L,QSA]
0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com