1

現在、リクエストを処理するコントローラーがあります (フレンドリ URL を使用)。このコントローラーにリダイレクトするには、次の .htaccess を使用します。

 RewriteEngine on

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d

 RewriteRule ^(.*)$ __controller.php?p=$1 [L,QSA]

次に、ホームページである /home にリダイレクトするindex.phpがあります (これを強制するので、ホームページもコントローラーを使用します)。

<?php
header('Location: home', true, 301);
exit();
?>

ただし、ファイルが index.php である場合、またはそれがルート ドメインである場合にも、このコントローラーに送信する必要があります (ホームページを www.test.com/home にするのではなく、単に www.test.com にする必要があるため) )、したがって、次のそれぞれがコントローラーを通過します。

www.test.com/friendly-url/123/post-topic (現在動作中)

だけでなく:

www.test.com/index.php および www.test.com

index.php ファイルが存在するため、最後の 2 つの条件は現時点では機能しないため、.htaccess はコントローラー経由でファイルを送信しません。

4

2 に答える 2

3
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^index.php$ /home [L,R=301,QSA]
RewriteRule ^$ __controller.php?p=home [L,QSA]
RewriteRule ^(.*)$ __controller.php?p=$1 [L,QSA]

これを探していますか?

次に、PHPリダイレクトは必要ありません

于 2012-05-30T11:43:54.597 に答える
0

.htaccess コードを次のように置き換えます。

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule (?!^index\.php/?$)^(.+)$ __controller.php?p=$1 [L,QSA,NC]
于 2012-05-30T11:50:25.727 に答える