1

目前我有一个处理请求的控制器(使用友好的 URL)。要重定向到此控制器,我使用以下 .htaccess:

 RewriteEngine on

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

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

然后我有一个index.php重定向到 /home 这是主页(我强制这样做,所以主页也使用控制器):

<?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 回答