2011-03-06 37 views
30

Test ortamımda çalışan bir web sitesi almaya çalışıyorum, ancak bir şekilde çalışmıyor. Normal dizin sayfasını yükleyebilirim, ancak/page/test'e erişmek istediğimde, sayfanın mevcut olmadığını belirten bir hata atıyor. aslında doğrudurApache sunucusu yok sayar .htaccess

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

ama yerine benim Sayfa kontrolöre var ve test yöntemini yüklenmelidir: My günlüğü diyor. Ben Gentoo kullanıyorum

<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> 

: gibi

# 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] 

Benim vhost yapılandırma görünür: gibi

Benim .htaccess görünüyor.

Herhangi bir yardım için teşekkür ederiz. Bu AllowOverride None

cevap

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

okunmaya karşı .htaccess dosyaları devre dışı bırakır. Bakınız the manual.

Ayrıca, lütfen .htaccess dosyalarında büyülü hiçbir şey olmadığını unutmayın. Sunucu yapılandırmasına tam erişemedikleri için geçici bir çözümdür. Hepsi tek bir Apache konfigürasyonu parçasıdır. Sunucu yapılandırmasına tam erişiminiz varsa, .htaccess dosyalarını değil, vhost yapılandırmasına bu gibi şeyler koymalısınız. yeniden yazma kuralları hala işe yaramazsa

+1

'/ etc/apache2/site-available' içinde ve'/etc/apache2/apache2.conf' '' AllowOverride None' ile yapılan yapılandırmalarda kontrol ettiğinizden emin olun. Bunu yapmamak, tüm toplantım için web sayfamın çalışma sürümünü sergilememi sağladı! –

+6

'AllowOverride All' sorunu düzeltir –

4

Bir şey hatırlamak:

Ayrıca ModRewrite modülünü etkinleştirmek! Ubuntu'da varsayılan olarak değil.

+0

Bu benim sorunumdu. Modülü etkinleştirdim ancak .htaccess dosyası 'RewriteEngine on' eksikti. Başka bir yapılandırmadan kopyala/yapıştırmayla uğraştığım şey bu! – vaindil

10

Jim'in dediği gibi, sunucunuza tam erişiminiz varsa, her şeyi sunucu yapılandırma dosyalarına koymalısınız.

Sunucumun kendi htaccess/server yapılandırma dosyalarını yok saydığını düşündüğüm için buraya ulaştım. Ancak mod_expires ve mod_rewrite devre dışı bırakılmış oldu. Bu ikisini araştırdıktan sonra her şey gerektiği gibi çalışıyordu.

Bu komutlarla etkinleştirebilirsiniz:

sudo a2enmod expires 
sudo a2enmod rewrite 

Apache

service apache2 restart 

bu birilerinin yardımcı Umut yeniden!

+0

Teşekkürler. mod yeniden yazmak yeterli değil, sona ermesi gerekiyordu. –

+0

en çok hoş geldiniz! –

+1

Keşke bunu +1000 yapabilirdim. teşekkür ederim!!!! – ingernet

İlgili konular