.htaccess mod_rewrite> 500 Внутренняя ошибка сервера

Я новичок в .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 Internal Server Error » 🙁

Какие-либо предложения ?

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

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

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

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

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

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

[Sat Aug 09 16:22:34 2008] [alert] [клиент 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

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

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

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

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

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

Удалить:

 Options +FollowSymLinks 

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

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

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

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

 #LoadModule rewrite_module modules/mod_rewrite.so 

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