首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.htaccess重定向如果根,index.php,而不是文件或不目录

.htaccess重定向如果根,index.php,而不是文件或不目录
EN

Stack Overflow用户
提问于 2012-05-30 11:34:28
回答 2查看 4.8K关注 0票数 1

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

代码语言:javascript
复制
 RewriteEngine on

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

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

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

代码语言:javascript
复制
<?php
header('Location: home', true, 301);
exit();
?>

但是,如果文件是index.php或者它是根域(因为我不再希望主页是www.test.com/home,而只是www.test.com),我也希望它发送给这个控制器,所以下面每一个都将通过控制器:

Www.test.com/friendly-url/123/post(目前正在工作)

但也包括:

www.test.com/index.php和www.test.com

显然,由于存在index.php文件,最后两个条件暂时无法工作,因此.htaccess不会通过控制器发送它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-30 11:43:54

代码语言:javascript
复制
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重定向了

票数 3
EN

Stack Overflow用户

发布于 2012-05-30 11:50:25

将您的.htaccess代码替换为:

代码语言:javascript
复制
RewriteEngine on

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

RewriteRule (?!^index\.php/?$)^(.+)$ __controller.php?p=$1 [L,QSA,NC]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10815486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档