2015-12-17 49 views
0

我需要所有的URL重定向到index.php我有一個處理URL頁面的路由器,所以如果有人輸入一個路徑(即使是一個真正的路徑)它重定向到的index.php:.htaccess重定向(重寫)不重定向真實的文件路徑

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]); 

這是工作確定的頁面,問題是真正的文件路徑(在url欄中)不被index.php解析。這是否應該發生?或者有什麼我可以做的?

此外,如果我嘗試導航到/index.php它會顯示我的404頁面,但如果我去到另一個文件,它會顯示它,而index.php不會做他的工作......

回答

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測試現有的文件或目錄

+1

謝謝!它現在正在工作。 –

+0

不客氣,很高興它解決了。 – Croises