.htaccess mod_rewrite> 500 Внутренняя ошибка сервера - PullRequest
1 голос
/ 05 марта 2011

Я использую .htaccess.

Моя оригинальная ссылка:

http://example.com/CareerDays/index.php?u_type=admin

И я пытаюсь сделать так:

http://example.com/v/admin

Весь код выглядит так:

RewriteEngine On
RewriteRule ^v/([^/]*)$ /CareerDays/index.php?u_type=$1 [L]

И я всегда получаю

" 500 Внутренняя ошибка сервера "

Ответы [ 7 ]

6 голосов
/ 06 ноября 2012

Когда вы помещаете директивы конфигурации в файл .htaccess, и вы не получаете желаемого эффекта, есть ряд вещей, которые могут пойти не так.

Чаще всего проблема в том, что директива AllowOverride в файле httpd.conf не установлена ​​так, что ваши директивы конфигурации выполняются. Убедитесь, что у вас нет действующего значения AllowOverride None для рассматриваемой области файла. Хороший тест для этого - поместить мусор в ваш файл .htaccess и перезагрузить страницу. Если ошибка сервера не генерируется, то почти наверняка действует AllowOverride None.

Если, с другой стороны, вы получаете ошибки сервера при попытке доступа к документам, проверьте журнал ошибок httpd. Вероятно, он скажет вам, что директива, используемая в вашем файле .htaccess, не разрешена.

[Пт. 17 сентября 18:43:16 2010] [оповещение] [клиент 192.168.200.51] /var/www/html/.htaccess: DirectoryIndex здесь не разрешен

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

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

[сб. Авг 09 16:22:34 2008] [alert] [client 192.168.200.51] /var/www/html/.htaccess: RewriteCond: разделители неверных флагов

В этом случае сообщение об ошибке должно соответствовать конкретной синтаксической ошибке, которую вы совершили.

Вы должны иметь AllowOverride, установленный на 'All' или 'FileInfo' в файле httpd.conf, чтобы иметь разрешения для директив mod_rewrite в файле .htaccess.

http://httpd.apache.org/docs/2.2/howto/htaccess.html

5 голосов
/ 05 марта 2011

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

1 голос
/ 04 декабря 2011

Проверьте ваш ../apache/conf/httpd.conf и найдите:

#LoadModule rewrite_module modules/mod_rewrite.so

Если знак хеша (#) отображается как первая буква, удалите его, сохраните и перезапустите сервер.

1 голос
/ 05 марта 2011

Это RewriteRule никогда не будет совпадать ...

Вы должны поместить .htaccess в корневой каталог с этим кодом:

RewriteEngine On
RewriteRule ^v/([^/]*)$ CareerDays/index.php?u_type=$1 [L]
0 голосов
/ 05 марта 2011

500 Ошибки часто являются результатом ошибок разрешения файла, а не чего-либо еще. Проверьте разрешения для вашего файла .htaccess.

Требуемые разрешения различаются в зависимости от среды (я предполагаю, что это в Linux - не должно быть проблемой в вдовах).

0 голосов
/ 05 марта 2011

Удалить:

Options +FollowSymLinks

Затем загрузите в корневую папку в режиме ASCII с вашего FTP-клиента.

0 голосов
/ 05 марта 2011

Этот .htaccess не входит в CareerDays.Если вы запишете запрос в каталог вне корневого каталога, сервер FIRST проверит, существует ли каталог, если его нет, то он будет иметь приоритет перед ROOT .htaccess.think не будет проверять .htaccess в несвязанном каталоге.

...