Подтвердить что ты не робот

Сервер Apache игнорирует .htaccess

Я пытаюсь получить сайт, работающий над моей тестовой средой, но почему-то не работает. Я могу загрузить обычную индексную страницу, но когда я хочу получить доступ /page/test, она вызывает ошибку, говорящую, что страница не существует. В моем журнале указано:

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]

Моя конфигурация vhost выглядит так:

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

Любая помощь будет оценена.

4b9b3361

Ответ 1

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

Этот AllowOverride None отключает файлы .htaccess от чтения. См. руководство.

Кроме того, помните, что в .htaccess файлах нет ничего волшебного. Они являются необоснованным решением об отсутствии полного доступа к конфигурации сервера. Все они - часть конфигурации Apache. Если у вас есть полный доступ к конфигурации сервера, вы должны помещать такие вещи в конфигурацию vhost, а не .htaccess.

Ответ 2

Как сказал Джим, если у вас есть полный доступ к вашему серверу, вы должны просто поместить все в файлы конфигурации сервера.

Я пришел сюда, потому что думал, что мой сервер игнорирует мои собственные файлы конфигурации htaccess/server. Однако оказалось, что mod_expires и mod_rewrite отключены. После того, как я заглянул туда, все работало снова, как должно.

Вы можете включить их, выполнив следующие команды:

sudo a2enmod expires
sudo a2enmod rewrite

Затем перезапустите apache

service apache2 restart

Надеюсь, это поможет кому-то там!

Ответ 3

Одна вещь, которую следует помнить, если ваши правила перезаписи еще не работают:

Также активируйте модуль ModRewrite! Это не по умолчанию в Ubuntu.