我需要所有的网址重定向到index.php,我有一个处理url页面的路由器,所以如果有人进入路径(甚至是真正的路径),它会重定向到index.php:
Options -Indexes
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^inmomarco.com$
RewriteRule (.*) http://www.inmomarco.com/$1 [R=301,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
它没有使用真实路径,如果我在/pages/file.php中有一个文件,并且我尝试导航到它就不能使用上述规则,为什么?
在index.php中,我得到了uri并逃脱了它:
$url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
// some security checks
// an array with the uri as keys and page names as values
在main.php中我包含了页面
$include = '/404';
if (array_key_exists($url, $includes)) {
$include = $url;
}
include($includes[$include]);
这工作正常,问题是index.php未解析的真实文件路径(在url栏中)。这应该发生吗?或者我能做些什么?
此外,如果我尝试导航到/index.php,它将显示我的404页面,但如果我转到另一个文件,它将显示它并且index.php不会做他的工作......
答案 0 :(得分:1)
在.htaccess
:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^inmomarco.com$
RewriteRule (.*) http://www.inmomarco.com/$1 [R=301,L]
RewriteBase /
RewriteRule !^index\.php$ /index.php [L]
因为-f
和-d
测试现有文件或目录