目前我有一个处理请求的控制器(使用友好的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 AND www.test.com
显然,由于index.php文件存在,目前最后两个条件不起作用,因此.htaccess不会通过控制器发送它。
答案 0 :(得分: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重定向
答案 1 :(得分:0)
将此.htaccess代码替换为:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (?!^index\.php/?$)^(.+)$ __controller.php?p=$1 [L,QSA,NC]