Я новичок в .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.
На моем хостинге мне нужно добавить первую строку: 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
Если знак хеша (#) появляется как первая буква, удалите его, сохраните и перезапустите сервер.