it-roy-ru.com

.htaccess не работает в Linux (Debian) Apache2

Я использую Apache2 (мой фиктивный сервер), который уже установлен с моим Debian . Все идет хорошо, но теперь проблема с моим .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

Это не работает  
Я думаю, что это из-за Apache2 версии, которую я использую, и, возможно, проблемы с моим кодом или что-то, что мне нужно config на моем сервере 

Я хочу перенаправить мой URL на главную страницу индекса, если его неправильная запись или недоступен  

6
VIKASH DASH

Потратив целый день, я получил ответ

В папке 
Apache2 >> sites-available >> Существует файл с именем default

По умолчанию мы должны изменить это

От:

<Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

TO:

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

Работает. Это позволяет использовать файлы .htaccess.

28
VIKASH DASH

Я хотел бы добавить, что /etc/Apache2/mods-available/rewrite.load должен быть включен:

a2enmod rewrite

В Debian я думал, что он включен по умолчанию, а у меня нет.

10
TFotH

Важно отметить, что AllowOverride работает только в директивах <Directory> и будет игнорироваться, если помещен в раздел <Location ...>; это была моя проблема, и мне потребовалась хорошая поездка.

Доступен только в разделах AllowOverrideList, действителен только в разделах, указанных без регулярных выражений, а не в или разделы.

https://httpd.Apache.org/docs/2.4/mod/core.html#allowoverride

1
Daniel Sokolowski

Этот код:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ /index.php?url=$1 [QSA,R]

перенаправит http://example.com/test.php в http://example.com/index.php?url=test.php, если файл не существует. Единственное отличие моего кода здесь от вашего: у меня [R] вместо [QSA, L]. Если он все еще не работает для вас и у вас есть файл htaccess в корневой папке, то я не думаю, что это проблема с файлом htaccess

1
Howli