2017-04-15 56 views
1

我正在爲客戶端編輯網站,並且遇到了一些障礙。我可以編輯和發佈現有頁面,但是如果我要創建新的.php.html頁面並嘗試在線查看它,我會發送到404錯誤頁面。我可以把我想要的新頁面重命名爲覆蓋現有的頁面,並且一切正常。.Htaccess重寫文件阻止查看新網頁,404錯誤

我已經嘗試了一些不同的方法來執行我需要的規則,但是他們要麼嘗試在根中查找頁面(當它實際上在/application/views/中時);或者它的工作原理和我有同樣的問題。

我需要幫助製作一個新的.htaccess文件,它允許你去website.com/signup,它會帶你到/application/views/signup.php。以下是我迄今嘗試過的一些例子。

原始.htaccess

RewriteEngine on 
RewriteCond $1 
!^(index\.php|images|css|js|uploads|db|fonts|blogger|support|robots\.txt) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

具有相同問題的另一種版本。

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^.*$ index.php/$1 [L] 

最後,一個允許查看新頁面但在根文件夾中查找它們的版本。例如。請求的網址/signup.php未在此服務器上找到。我想如果這是修改它會工作,但我沒有經驗.htaccess規則。非常感謝任何能夠幫助我和未來瀏覽器的人!

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
RewriteRule ^([^\.]+)$ $1.html [NC,L] 
RewriteRule ^([^\.]+)$ $1.htm [NC,L] 
+0

爲了澄清,您似乎將完全_static_文件添加到某種現有框架/ CMS?或者你是否試圖向「框架」添加額外的頁面(無論這可能是什麼框架) - 這可以解釋爲什麼改變現有頁面似乎有效? – MrWhite

回答

1

您應該能幾個條件(RewriteCond指令)添加到.htaccess文件規則:

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|css|js|uploads|db|fonts|blogger|support|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L] 

所以,只有當請求不映射到實際的文件或目錄將被重寫(到前端控制器)。

+0

這有幫助,我現在可以導航到根目錄中的某個東西。例如。 website.com/test.php但是,除此之外的任何子文件夾都與以前一樣具有相同的問題。至於你的評論,我不認爲這是一個CMS網站,只是一個網站,與用戶管理的數據庫的一些聯繫,這與它有關。 –

+0

「我不認爲這是一個CMS網站」 - 它只是原來的'.htaccess'文件是_front controller_。換句話說,所有請求都被傳遞給'index.php',這大概知道如何路由這些URL?關於「子文件夾」 - 這應該也適用於子文件夾,假設這些子文件夾中沒有額外的'.htaccess'文件?大概在原始的'.htaccess'文件中沒有其他指令? – MrWhite

+0

哦,在這種情況下...這個網站使用codeignighter框架。沒有其他.htaccess文件。 index.php文件是路由他們,但它仍然沒有意義,我不能以任何方式添加新的頁面。有小費嗎?感謝您一直以來的幫助。 –