Ошибки сервера с .htaccess mod_rewrite

На моем локальном хосте проблем нет, но когда я загружаю свой файл .htaccess в свою учетную запись хостинга 1 и 1, я натыкаюсь на кирпичную стену (внутренняя ошибка сервера 500)

Обновление: я нашел оскорбительный код, просто не знаю, почему он не работает или как его исправить (я закомментировал неработающую строку)

 #RewriteRule ^([a-zA-Z_\-/]+)(\/?)$ index.php?p=$1 [R,NC,QSA,L]
  RewriteRule ^([a-zA-Z_/]+)(\/?)$ index.php?p=$1 [R,NC,QSA,L]

Содержимое файла .htaccess:

AddType x-mapp-php5 .php   
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !\.(jpg|jpeg|gif|png|css|js|pl|txt)$
RewriteRule ^([a-zA-Z_\-/]+)(\/?)$ /index.php?p=$1 [L]

Комментирование последней строки (RewriteRule...) предотвращает появление ошибки, но мне, очевидно, нужно, чтобы это работало.

Файл отлично работает для меня на моей локальной машине. Ну, это немного отличается, поэтому я тоже включу этот код (различия: флаги, '/ NEP' и 1-я строка)

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !\.(jpg|jpeg|gif|png|css|js|pl|txt)$
RewriteRule ^([a-zA-Z_\-/]+)(\/?)$ /NEP2/index.php?p=$1 [NC,QSA,L]

Пара примеров перезаписи, которые я пытаюсь выполнить:

  • dev.mydomain.com/services/ => dev.mydomain.com/index.php?p=services

  • dev.mydomain.com/quality/control => dev.mydomain.com/index.php?p=quality/control

Любая помощь/совет, который вы можете дать, будет принята с благодарностью. Мне действительно нужно сделать эту работу к концу дня.


person Zach Lysobey    schedule 23.09.2011    source источник
comment
Можете ли вы проверить журналы ошибок apache? Это было бы полезно.   -  person regality    schedule 23.09.2011
comment
хм... могу ли я получить доступ к тем, у кого есть дешевая учетная запись хостинга 1and1? Я попробую сейчас.   -  person Zach Lysobey    schedule 23.09.2011
comment
Поскольку по техническим причинам мы не предоставляем доступ к журналам ошибок Apache для пакетов виртуального хостинга, вы можете создавать собственные журналы ошибок для отладки PHP-скриптов. - поможет ли создание собственных журналов ошибок?   -  person Zach Lysobey    schedule 23.09.2011
comment
@ Зак, нет. Они не будут содержать сообщений об ошибках Apache. Я думаю, что это сводится к методу проб+ошибок, тогда   -  person Pekka    schedule 23.09.2011
comment
спасибо, ребята, я думаю, я просто продолжу пробовать разные вещи с этой последней строкой, и, надеюсь, это что-то сделает. Кажется, это невозможно понять, потому что он просто терпит неудачу, не давая никакой полезной информации.   -  person Zach Lysobey    schedule 23.09.2011
comment
хорошо, я разобрался. \- виноват   -  person Zach Lysobey    schedule 23.09.2011
comment
Вы можете ответить на свой вопрос, используя ответ :)   -  person Jon Skarpeteig    schedule 07.10.2011


Ответы (1)


Дефис/тире в наборе символов работает как оператор диапазона (например, 0-9 или az). Наличие его в середине или конце может быть проблематичным.

Перемещение его в начало набора символов позволяет избежать этой проблемы и означает, что вам не придется экранировать его с помощью \:

[-a-zA-Z_/]
person whoisgregg    schedule 20.10.2011