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>
Я полагаю, именно поэтому проблема обычно рассматривается, но редко решается в этих потоках. Если бы я просто скопировал другой блок, набрал свой собственный блок или имел какое-либо понимание того, что я делаю, это не было бы проблемой.
Я не могу сказать, что это решает все проблемы, но я ненавижу, когда люди Решай и беги, не просвещая остальных. Так что для тех, кто сделал мою ошибку, это ответ.