Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Apache server ignores .htaccess

I'm trying to get a website working on my test environment, but somehow it is not working. I can load the normal index page, but when I want to access /page/test it throws an error saying the page does not exists. My log says:

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

Which is in fact true, but it should got to my Page controller instead and load the test method.

My .htaccess looks like:

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

My vhost configuration looks like:

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

I'm using Gentoo.

Any help would be appreciated.

like image 662
Rene Terstegen Avatar asked Mar 06 '11 13:03

Rene Terstegen


People also ask

Why is my .htaccess file not working?

Improper syntax being used It is quite common for a syntax error to be the reason for an . htaccess file not working. If you are familiar with how to read and configure . htaccess rules, double check your configuration.

How do I know if htaccess is read?

The simplest way to test if apache uses your . htaccess file, or if it otherwise ignores it, is to intentionally break it. Edit the . htaccess file, so the first line reads 'Test.

How do you check htaccess is working or not on server?

Save the file and type the URL yoursite.com/foobar/ . If the reditect works and the URL gets redireted to the homepage of example.com then it's clear that your htaccess is working and being read by your Apache server. If it still doesn't work then the problem might be that your hosting provider has not enabled it.


1 Answers

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

This AllowOverride None disables .htaccess files from being read. See the manual.

Also, please bear in mind that there's nothing magical about .htaccess files. They are a crude workaround for not having full access to the server configuration. All they are is a piece of Apache configuration. If you have full access to the server configuration, you should be putting stuff like this into the vhost configuration, not .htaccess files.

like image 168
Jim Avatar answered Oct 22 '22 09:10

Jim