Я пытаюсь получить сайт, работающий над моей тестовой средой, но почему-то не работает. Я могу загрузить обычную индексную страницу, но когда я хочу получить доступ / 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'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.
Любая помощь будет оценена по достоинству.
<Directory "/home/page_url/www/"> AllowOverride None
Этот AllowOverride None
отключает файлы .htaccess
от чтения. См. Руководство .
Кроме того, имейте в виду, что нет ничего волшебного в файлах .htaccess
. Они являются необоснованным решением об отсутствии полного доступа к конфигурации сервера. Все они – часть конфигурации Apache. Если у вас есть полный доступ к конфигурации сервера, вы должны помещать такие вещи в конфигурацию vhost, а не файлы .htaccess
.
Как сказал Джим, если у вас есть полный доступ к вашему серверу, вы должны просто поместить все в файлы конфигурации сервера.
Я пришел сюда, потому что думал, что мой сервер игнорирует мои собственные файлы конфигурации htaccess / server. Однако оказалось, что mod_expires и mod_rewrite отключены. После того, как я занялся этими двумя, все работало снова, как должно.
Вы можете включить их, выполнив следующие команды:
sudo a2enmod expires sudo a2enmod rewrite
Затем перезапустите apache
service apache2 restart
Надеюсь, это поможет кому-то!
Одна вещь, чтобы помнить, если ваши правила перезаписи все еще не работают:
Также активируйте модуль ModRewrite! Это не по умолчанию в Ubuntu.