500 внутренняя ошибка с RewriteEngine на.htaccess на localhost с wamp

у меня проблема со скриптом. Он не работает с файлом htaccess, который необходим для работы. Вот что содержит htaccess. Я пытаюсь установить его на WAMP localhost. Код:

#AddType x-mapp-php5 .php
#AddHandler x-mapp-php5 .php

RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/ [PT,L]
#RewriteRule ^(.*)$ /index.php?q= [L,QSA]

Options All -Indexes

Если я удалю это, он работает:

RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/ [PT,L]
#RewriteRule ^(.*)$ /index.php?q= [L,QSA]

но таким образом скрипт загружается, но каждая страница показывает ошибку 404. Есть ли способ решить эту проблему??

4 ответов


похоже, что у вас нет загруженных модулей перезаписи. Найти файле httpd.conf файл и убедитесь, что эта строка (или что-то подобное) не раскомментирована:

LoadModule rewrite_module modules/mod_rewrite.so

убедитесь, что у вас загружен модуль перезаписи apache.

перейдите в wamp_manager - > apache - > modules и найдите rewrite_module в списке.

Если рядом с ним нет галочки, нажмите на нее. Apache будет отскочил ( стоп, старт). Попробовать еще раз.

двигатель rewite не будет работать без необходимого загруженного модуля.


У меня была та же проблема. Чтобы отменить комментарий к строке, удалите # перед строкой LoadModule rewrite_module modules / mod_rewrite.так что

работал на меня в Wamp.

каталог httpd.файл conf: C:\wamp\bin\apache\apache2.4.9\conf


Это одно решение, которое решило проблему для меня. Модуль перезаписи всегда был включен, используется в IfModule rewrite_module, разрешения были предоставлены и .содержимое htaccess было в порядке, но все еще была ошибка 500 при попытке использовать модуль перезаписи.

In httpd.conf by default:

This is a source of a 500 error if you try to use rewrite in .htaccess in some sub directory.

` 
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other 
# <Directory> blocks below.
#

    <Directory />
        AllowOverride none
        Require all denied
    </Directory>
`    

поэтому можно использовать .htaccess с rewrite модуль в определенном каталоге. Вы бы добавили <directory> блок для этого каталога. Если один копирует и вставляет блок каталога, вам нужно убедиться, что намерение блока вы copy является правильным для каталога, к которому вы хотите применить его.

поэтому для моего намерения этот блок вызывает ошибку 403, но избавляется от ошибки 500.

<Directory "c:/Apache24/htdocs/store">
    AllowOverride All
    Options None
    Require all granted
</Directory>


Changing to this solved the issue:

<Directory "c:/Apache24/htdocs/store">
    AllowOverride All
    Require all granted
</Directory>

Я полагаю, именно поэтому проблема обычно рассматривается, но редко решается в этих потоках. Если бы я просто скопировал другой блок, набрал свой собственный блок или имел какое-либо понимание того, что я делаю, это не было бы проблемой.

Я не могу сказать, что это решает все проблемы, но я ненавижу, когда люди Решай и беги, не просвещая остальных. Так что для тех, кто сделал мою ошибку, это ответ.