чистые ссылки в ubuntu

Главные вкладки

Аватар пользователя Splinter Splinter 2 октября 2009 в 9:13

Добрый день, установил себе LAMP, установил друпал, все работает на ура, только чистые ссылки не включаются. Облазил весь drupal.ru и drupal.org, ни одно решение мне не помогло. Уже и не знаю что делать, сначало забил, решил что включу на хостинге. Но оказалось что связка imagecache + imagefield не работает если чистые ссылки выключены. Поэтому пришлось опять проштудировать оба форума и опять ни к чему не пришел.

Последняя надежда на гуру, помогите уже решить это проблему. Может кто нибудь покажет рабочие конфиги как правильно надо конфигурировать хосты, апач, .htaccess и тд

P.S. rewrite включен.

Комментарии

Аватар пользователя Splinter Splinter 2 октября 2009 в 10:09

Все это пробовал на 2 раза, ничего не помогает. Модуль rewrite включен. Убедился аж двумя способами, через консоль и через функцию phpinfo()

Аватар пользователя vgoodvin vgoodvin 2 октября 2009 в 11:34

1. должен присутствовать .htaccess (желательно оригинальный)
2. влючен mod_rewrite
3. в конфиге апача обязательно пропишите директиву "AllowOverride" вот так:

   <Directory "/путь/к/сайту/*">
    AllowOverride All
   </Directory>
   

или вот так:

   AllowOverride All
   

У меня все эти условия соблюдаются и все работает. Конечно не на убунте, а на арче, но разницы нет.
если не помогает, прочитайте http://drupal.org/node/15365 еще раз. Там немного, но упустить что-то можно всегда.

Аватар пользователя Splinter Splinter 2 октября 2009 в 13:00

Stan.Ezersky, да существует.
Вот код модуля rewrite:

<IfModule mod_rewrite.c>
  RewriteEngine on

  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]
</IfModule>

Конфиг хоста:

<VirtualHost *:80>
        ServerName drupal
        ServerAdmin webmaster@localhost
        ServerAlias *.drupal
        DocumentRoot /var/www/drupal/httpdocs
        <Directory /var/www/drupal/httpdocs/*>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /var/www/drupal/logs/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/www/drupal/logs/access.log combined
</VirtualHost>

Аватар пользователя Stan.Ezersky Stan.Ezersky 2 октября 2009 в 13:10

.htaccess:

#
# Apache/PHP/Drupal settings:
#

# Protect files and directories from prying eyes.
<FilesMatch "\.(engine|inc|info|install|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$">
  Order allow,deny
</FilesMatch>

# Don't show directory listings for URLs which map to a directory.
Options -Indexes

# Follow symbolic links in this directory.
Options +FollowSymLinks

# Make Drupal handle any 404 errors.
ErrorDocument 404 /index.php

# Force simple error message for requests for non-existent favicon.ico.
<Files favicon.ico>
  # There is no end quote below, for compatibility with Apache 1.3.
  ErrorDocument 404 "The requested file favicon.ico was not found.
</Files>

# Set the default handler.
DirectoryIndex index.php

# Override PHP settings. More in sites/default/settings.php
# but the following cannot be changed at runtime.

# PHP 4, Apache 1.
<IfModule mod_php4.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_value mbstring.encoding_translation   0
</IfModule>

# PHP 4, Apache 2.
<IfModule sapi_apache2.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_value mbstring.encoding_translation   0
</IfModule>

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_value mbstring.encoding_translation   0
</IfModule>

# Requires mod_expires to be enabled.
<IfModule mod_expires.c>
  # Enable expirations.
  ExpiresActive On

  # Cache all files for 2 weeks after access (A).
  ExpiresDefault A1209600

  # Do not cache dynamically generated pages.
  ExpiresByType text/html A1
</IfModule>

# Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on

  # If your site can be accessed both with and without the 'www.' prefix, you
  # can use one of the following settings to redirect users to your preferred
  # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
  #
  # To redirect all users to access the site WITH the 'www.' prefix,
  # (http://example.com/... will be redirected to http://www.example.com/...)
  # adapt and uncomment the following:
  # RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
  # RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
  #
  # To redirect all users to access the site WITHOUT the 'www.' prefix,
  # (http://www.example.com/... will be redirected to http://example.com/...)
  # uncomment and adapt the following:
  # RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
  # RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

  # Modify the RewriteBase if you are using Drupal in a subdirectory or in a
  # VirtualDocumentRoot and the rewrite rules are not working properly.
  # For example if your site is at http://example.com/drupal uncomment and
  # modify the following line:
  # RewriteBase /drupal
  #
  # If your site is running in a VirtualDocumentRoot at http://example.com/,
  # uncomment the following line:
  # RewriteBase /

  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>

# $Id: .htaccess,v 1.90.2.3 2008/12/10 20:04:08 goba Exp $

default

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName drupal.homeip.net
    DocumentRoot /home/drupal/public_html
    ErrorLog /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log combined
     <Directory "/home/drupal/public_html">
     AllowOverride All
     </Directory>
</VirtualHost>
Аватар пользователя Splinter Splinter 2 октября 2009 в 14:01

Stan.Ezersky, сделал все как у вас, и почему то вообще перестал открываться друпал, точнее открывается, а там надпись только It Works

Чушь какая то, ни черта не понимаю

Аватар пользователя Stan.Ezersky Stan.Ezersky 2 октября 2009 в 15:19

It Works, если мне не изменяет память, выскакивает при обращение к адресу http://localhost (/var/www/index.html), так что проверяйте правильность путей в default и hosts

.htaccess дефолтный

ServerName drupal.homeip.net это вам не нужно, если не пользуетесь сервисом dyndns

Вот вам ещё и пример файла hosts (находится /etc)

127.0.0.1 localhost
127.0.0.2 drupal.loc

192.168.0.101 drupal.homeip.net

# The following lines are desirable for IPv6 capable hosts
.....................

Доп
Файл httpd.conf в директории /etc/apache2 должен содержать
ServerName localhost
Файл 000-default в директории /etc/apache2/sites-enabled должен содержать в первой строчке
nameVirtualHost *:80
и можете написать так:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/drupal
    ServerName phpmyadmin
    ErrorLog /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log combined
     <Directory "/var/www/drupal">
     AllowOverride All
     </Directory>
</VirtualHost>

Не забудьте добавить изменения в hosts

Аватар пользователя Splinter Splinter 2 октября 2009 в 20:37

это пипец, вообще все тоже самое сделал, уже даже апач и все остальное переставил, ну не работает хоть тресни. Ладно, спасибо большое за помощь, буду читать доки.

Аватар пользователя Userbar Userbar 21 января 2010 в 20:36

Работаю с:

Ubuntu 9.10
Apache2
Drupal 6.15

Также возникла проблема с включением чистых ссылок в Drupal. На заморочку поиска решения проблемы ушли сутки. В итоге удалось таки включить чистые ссылки. В моём случае решением было:

  • в файле настроек виртуального хоста /etc/apache2/sites-available/default значение "AllowOverride None" заменить на "AllowOverride All" (в моём случае такое значение в данном файле было указано 4 раза. Соответственно сделано 4 замены на "AllowOverride All")
  • перезапустить Апач: sudo /etc/init.d/apache2 restart
  • Включить чистые ссылки в Друпал: admin/settings/clean-urls
Аватар пользователя Splinter Splinter 23 января 2010 в 11:39

в моём случае пришлось прописать в файлах конфига сайта правила что написанны в .htaccess, там почему то они не работали, хотя в конфигах самого апача .htaccess был разрешен.

Аватар пользователя xoar xoar 28 мая 2012 в 13:45

Тоже провозился почти полдня, пока не наткнулся на данный совет.
Действительно, по каким то только Ubuntu ведомым причинам при автоматической распаковке файла .htaccess не было. Либо его снесло при инсталляции. Так или иначе, переписав его снова ручками в корень, все заработало.
А поначалу тоже полез в форумы по апачи.
И все же пока легкой автоматизации по первичной настройке не хватает. Сравниваю просто пока Битрикс, ну это мое имхо личное, конечно. Друпал я пока что начал изучать и доволен, очень доволен. Есть куда еще стремиться, но все равно гибче Битрикса, если говорить о стандартных средствах управления через панель.

Аватар пользователя vyck24 vyck24 11 ноября 2013 в 23:55

У меня заработала так и на 6 и 7:
Ubuntu 13.04 + nginx
в конце файла /etc/nginx/sites-available/filmul.ru.vhost перед закрывающей "}" добавил:

location / {
    index index.php;
    # This is cool because no php is touched for static content
    try_files $uri $uri/ @rewrite;
    expires max;
  }

  location @rewrite {
    # Some modules enforce no slash (/) at the end of the URL
    # Else this rewrite block wouldn&#39;t be needed (GlobalRedirect)
    rewrite ^/(.*)$ /index.php?q=$1;
  }

  location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /srv/www/www.filmu.ru/public_html$fastcgi_script_name;
    fastcgi_intercept_errors on;
    fastcgi_pass unix:/var/run/php-fpm.sock; # fastcgi_pass unix:/tmp/php5-fpm.sock;
 }

может в этом коде что-то лишнего, но у меня работает, если нужно добавить или удалить подскажите.

Аватар пользователя sg85 sg85 12 ноября 2013 в 1:06

2vyck24, Вам осталось объяснить людям что это за файл, каким боком он относится к их сайту, и как заставить все это дело работать еще и через прокси(такой вариант встречается чаще), а вообще, последнему посту в теме полтора года и не думаю, что это актуально Wink

Кроме того, через реврайт настраивать nginx под ЧПУ не правильно

Аватар пользователя vyck24 vyck24 12 ноября 2013 в 10:40

sg85 wrote:
2vyck24, Вам осталось объяснить людям что это за файл, каким боком он относится к их сайту, и как заставить все это дело работать еще и через прокси(такой вариант встречается чаще), а вообще, последнему посту в теме полтора года и не думаю, что это актуально Wink

Кроме того, через реврайт настраивать nginx под ЧПУ не правильно

обьяснить не могу, я этот код взял с англииского форума, там может и было сказоно что и как но сейчас не помню где сказано, так что сори