2017-03-05 54 views
0

如果我去:在本地主機,但404的笨頁面加載在服務器

http://localhost/entry

我看到我的測試頁。如果我去:

http://examplesite.com/entry

,我收到了404頁。我不是指Codeigniter 404頁面,而是默認的Apache頁面。代碼庫是相同的。

的主頁工作正常,但任何內頁404。這是我的根.htaccess文件的內容:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    # Removes access to the system folder by users. Additionally this will allow you to create a System.php controller, 'system' can be replaced if you have renamed your system folder. 
    RewriteCond %{REQUEST_URI} ^system.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    # When your application folder isn't in the system folder. This snippet prevents user access to the application folder. Rename 'application' to your applications folder name. 
    RewriteCond %{REQUEST_URI} ^application.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    # Checks to see if the user is attempting to access a valid file, such as an image or css document, if this isn't true it sends the request to index.php. 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

國防部重寫的是()與驗證的phpinfo在服務器上啓用。我錯過了什麼嗎?

+0

你設置了base_url()嗎?在'config.php'中? –

+0

@Hekmat我確實將它設置爲'http:// mysubdomain.mydomain.com /' – TK123

回答

1

當您看到Apache的404狀態頁而不是CodeIgniter的404時,mod_rewrite未處於活動狀態。

phpinfo只告訴你,如果一個模塊被加載,而不是如果它被正確配置。您可以可靠地檢查,如果mod_rewrite處於活動狀態,向<IfModule mod_rewrite.c>...</IfModule>內的.htaccess添加垃圾。當它處於活動狀態時,您將收到500服務器錯誤。

要使用mod_rewrite.htaccess文件,AllowOverrideOptions必須在相應的目錄,例如設置

AllowOverride FileInfo 
Options +FollowSymLinks 

甚至

AllowOverride All # default if <= 2.3.8 
Options All # this is the default 

無關,但%{REQUEST_URI}開始以斜線的,所以前兩個規則(這些RewriteCond S)永遠不會匹配。

+0

嗯Mod重寫已經在它上面了。我在服務器的終端'sudo a2enmod rewrite'上運行了這個命令,並返回了'Module rewrite already enabled'。此外以前,當它沒有啓用主頁不工作,但啓用後它現在工作,而不是內部頁面。 – TK123

+1

那麼'AllowOverride'和'Options'呢? –

+0

就是這樣,我必須在httpd cofig文件中設置AllowOverride all。現在工作。 – TK123

0

您是否檢查網站的基本網址是否設置爲您的本地地址,如果您在您的實時網站上安裝了配置項,那麼機會是您的基本網址設置爲該網址。嘗試在配置文件中驗證它。

相關問題