Имам прясна инсталация на Apache 2.2 на моята машина с Vista, всичко работи добре, с изключение на mod rewrite.
Разкоментирах
LoadModule rewrite_module modules/mod_rewrite.s
но нито едно от моите правила за пренаписване не работи, дори прости като
RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404
Всички правила, които използвам, работят на моя хостинг, така че би трябвало да са наред, така че въпросът ми е има ли някакво скрито нещо в конфигурацията на apache, което би могло да блокира мода rewrite?
За моята ситуация имах
RewriteEngine On
в моя .htaccess
, заедно със зареждането на модула, и това не работеше.
Решението на моя проблем беше да редактирам записа на vhost, за да включа
AllowOverride all
в раздела <Directory>
за въпросния сайт.
Само забелязах, че си казал mod_rewrite.s вместо mod_rewrite.so - надявам се, че това'е печатна грешка във въпроса ти, а не във файла httpd.conf! :)
По-скоро съм свикнал да използвам Apache под Linux, но онзи ден ми се наложи да направя това.
Първо, погледнете в директорията за инсталиране на Apache. (Предполагам, че сте го инсталирали в "C:\Program Files" тук)
Погледнете в папката: "C:\Program Files\Apache Software Foundation\Apache2.2\modules" и се уверете, че там има файл, наречен mod_rewrite.so. (Би трябвало да го има, той се предоставя като част от инсталацията по подразбиране.
След това отворете "C:\Program Files\Apache Software Foundation\Apache2.2\conf" и отворете httpd.conf. Уверете се, че редът:
#LoadModule rewrite_module modules/mod_rewrite.so
не е коментиран:
LoadModule rewrite_module modules/mod_rewrite.so
Също така, ако искате да активирате RewriteEngine по подразбиране, може да добавите нещо като
<IfModule mod_rewrite>
RewriteEngine On
</IfModule>
в края на вашия файл httpd.conf.
Ако не, уверете се, че сте посочили
RewriteEngine On
някъде във вашия .htaccess файл.
Очевидно е, че има повече от един начин да го направите, но аз бих предложил да използвате по-стандартния:
ErrorDocument 404 /index.php?page=404