2011-03-06 151 views
30

我試圖讓我的測試環境工作的網站,但不知何故,它不工作。我可以加載正常的索引頁面,但是當我想訪問/頁面/測試時會拋出一個錯誤,指出該頁面不存在。我的日誌說:Apache服務器忽略.htaccess

File does not exist: /home/page_url/www/page

這實際上是真實的,但它應該得到我的頁面控制器代替並加載測試方法。

我的.htaccess的樣子:

# Turn on URL rewriting 
RewriteEngine On 

# Installation directory 
RewriteBase/

# Protect hidden files from being viewed 
<Files .*> 
    Order Deny,Allow 
    Deny From All 
</Files> 

# Protect application and system files from being viewed 
RewriteRule ^(?:application|modules|system)\b.* /$0 [L] 

# Allow any files or directories that exist to be displayed directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# Rewrite all other URLs to index.php/URL 
RewriteRule .* index.php/$0 [PT] 

我的虛擬主機配置是這樣的:

<VirtualHost *:80> 
    ServerName page_url 
    Include /etc/apache2/vhosts.d/vhco.include 
    DocumentRoot "/home/page_url/www/" 

    # Logging 
    CustomLog /var/log/apache2/access_log common 
    ErrorLog /var/log/apache2/error_log 

    # This should be changed to whatever you set DocumentRoot to. 
    <Directory "/home/page_url/www/"> 
     # Possible values for the Options directive are "None", "All", 
     # or any combination of: 
     # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews 
     # 
     # Note that "MultiViews" must be named *explicitly* --- "Options All" 
     # doesn't give it to you. 
     # 
     # The Options directive is both complicated and important. Please see 
     # http://httpd.apache.org/docs/2.2/mod/core.html#options 
     # for more information. 
     Options Indexes FollowSymLinks 

     # AllowOverride controls what directives may be placed in .htaccess files. 
     # It can be "All", "None", or any combination of the keywords: 
     # Options FileInfo AuthConfig Limit 
     AllowOverride All 

     # Controls who can get stuff from this server. 
     Order allow,deny 
     Allow from All 
    </Directory> 

    <IfModule alias_module> 
     # Redirect: Allows you to tell clients about documents that used to 
     # exist in your server's namespace, but do not anymore. The client 
     # will make a new request for the document at its new location. 
     # Example: 
     # Redirect permanent /foo http://www.example.com/bar 

     # Alias: Maps web paths into filesystem paths and is used to 
     # access content that does not live under the DocumentRoot. 
     # Example: 
     # Alias /webpath /full/filesystem/path 
     # 
     # If you include a trailing/on /webpath then the server will 
     # require it to be present in the URL. You will also likely 
     # need to provide a <Directory> section to allow access to 
     # the filesystem path. 

     # ScriptAlias: This controls which directories contain server scripts. 
     # ScriptAliases are essentially the same as Aliases, except that 
     # documents in the target directory are treated as applications and 
     # run by the server when requested rather than as documents sent to the 
     # client. The same rules about trailing "/" apply to ScriptAlias 
     # directives as to Alias. 
     ScriptAlias /cgi-bin/ "/var/www/localhost/cgi-bin/" 
    </IfModule> 

    # "/var/www/localhost/cgi-bin" should be changed to whatever your ScriptAliased 
    # CGI directory exists, if you have that configured. 
    <Directory "/home/page_url/www/"> 
     AllowOverride None 
     Options None 
     Order allow,deny 
     Allow from All 
    </Directory> 
</VirtualHost> 

我使用的Gentoo。

任何幫助,將不勝感激。

回答

61
<Directory "/home/page_url/www/"> 
    AllowOverride None 

AllowOverride None禁止被讀取.htaccess文件。見the manual

此外,請記住.htaccess文件沒有什麼不可思議的。對於沒有完全訪問服務器配置,這是一個粗略的解決方法。他們只是一個Apache配置。如果您可以完全訪問服務器配置,則應該將這樣的內容放入虛擬主機配置中,而不是.htaccess文件。

+1

請務必在'/ etc/apache2/sites-available'和'/etc/apache2/apache2.conf'中檢查'AllowOverride None'的配置。不這樣做讓我無法在整個會議中顯示我的網頁的工作版本! – 2015-03-27 17:53:49

+6

'AllowOverride All'修復了問題 – 2015-04-11 18:41:37

4

有一點要記住,如果你的重寫規則仍然不工作:

還要激活ModRewrite模塊!這在Ubuntu中不是默認的。

+0

這是我的問題。我啓用了該模塊,但我的.htaccess文件丟失了'RewriteEngine on'。這就是我搞亂從另一個配置複製/粘貼! – vaindil 2016-04-28 14:03:14

10

正如Jim所說,如果您有完全訪問服務器的權限,則應該將所有內容都放在服務器配置文件中。

我到達這裏是因爲我以爲我的服務器忽略了我自己的htaccess /服務器配置文件。但是,事實證明我有mod_expires和mod_rewrite禁用。在我看到這兩個人之後,所有事情都應該重新開始。

您可以通過執行這些命令,使他們:

sudo a2enmod expires 
sudo a2enmod rewrite 

然後重新啓動Apache

service apache2 restart 

希望這有助於有人出來!

+0

謝謝。國防部重寫是不夠的,我不得不添加到期。 – 2016-05-17 11:07:29

+0

你是最受歡迎的! – 2016-05-18 03:00:25

+1

我希望我能+1000這個。謝謝!!!! – ingernet 2017-07-19 22:18:54