Problems with mod rewrite and existing directory

Discussion in 'General' started by fmmarzoa, Jan 23, 2012.

  1. fmmarzoa

    fmmarzoa New Member

    Hi,

    I have two webservers, one for development with Ubuntu 11.10 and other for deployment with Ubuntu 10.04. Both runs apache with similar configuration, and the only relevant difference I think it is that deployment one uses ISPConfig 3, so I think my problem may be related with that (perhaps not, indeed...).

    Well, I have in both servers the following .htaccess at website root directory:

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule .* index.php [L]

    As you may know, it tells to apache that if the requested filename is neither a file, nor a directory and not a symlink, it should redirect request to index.php.

    It works as expected on my development site without ISPConfig 3, but it does NOT on my deployment one with it. The problem is that it redirects to index.php even a folder that yet exists.

    So, I have an /admin folder there with the backend office of the site. In the development site if I do:

    http://mydomain.com/admin/

    It works as expected, but in deployment one it redirects to index.php as if it were not a directory. But the folder is there and it IS a directory without any doubt. So I think that mod rewrite directives may be failing for some reason, but what???

    Thanks a lot in advance,
     
  2. till

    till Super Moderator Staff Member ISPConfig Developer

    The .htaccess file ahs to be in the "web" subdirectory of the website. Then check the permissions of your .htaccess file, it must be readable by the apache user. This ,eans that it is ether world readable or at least readable for the user and group when the user is the web user and the group is the client group of this website.
     
  3. fmmarzoa

    fmmarzoa New Member

    .htaccess is readable

    Hi,

    Thanks a lot by your answer, but .htaccess is on web subdir and it is readable, otherwise it will not be doing the redirection that it is doing.

    Anyway:
    -rw-r--r-- 1 web2 client2 295 2012-01-23 02:38 .htaccess

    The problem is that those RewriteCond seems to be ignored by Apache, or for some reason it thinks that /admin is not a directory, or something similar.

    One thing that it seems to be important is that /admin has its own .htaccess file and it is password protected. I did not think that this was relevant for the case, but I have found a guy with similar problems here:

    http://stackoverflow.com/questions/163302/how-do-i-ignore-a-directory-in-mod-rewrite

    See the answer Apr 19 '10 at 1:31 by matdumsa:

    "RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    These conditions are already supposed not to rewrite the url of existing folders but they don’t do their job for password protected folders."

    To do a fast test on this, I just removed the .htaccess file from /admin and after that the redirection works as expected, so the http://mysite.com/admin is working right. The problem is that I need that folder to be password protected, so now I must find a way to have that /admin/.htaccess file and RewriteCond working...

    Best regards,
     
  4. till

    till Super Moderator Staff Member ISPConfig Developer

    Have you tried to add the password protection in the .htaccess file in the web directory e.g. inside of a directory directive before or after the rewrite?
     
  5. commentator

    commentator Member

Share This Page