Intereting Posts
модальное всплывающее окно заполняет только данные первого элемента на всех элементах элементов Веб-узлы с PHP и Node.js Добавление настраиваемых полей измерения для каждой настройки параметров для переменных продуктов Заполнение раскрывающегося списка PHP из базы данных MySQL содержимое двоичного файла, указанное в php print_r, но не сохраненное в mysql Как использовать мой сервер в качестве прокси для загрузки файлов через PHP? Избегание неоднозначных ошибок столбцов при использовании JOIN в MySQL PHPUnit :: получить сообщение: ОК, но неполные или пропущенные тесты! без какой-либо информации, где это происходит QuickBooks IPP v3 получает ошибку 3200 при добавлении счета-фактуры Вложенные отношения Laravel Многомерный массив в неупорядоченный список HTML Попробуйте и закройте соединение с базой данных pdo Улучшение канала Twitter JSON Доступ к SkyDrive с использованием PHP и OAuth Как сделать отдельный URL для входа через Facebook с помощью FOSFacebookBundle в Symfony2

RewriteRule, создающий 500 внутренних ошибок сервера

В моем файле .htaccess есть следующее:

Options +FollowSymLinks RewriteEngine on RewriteRule ^directory/(.*)$ directory/index.php?id=$1 

Я пытаюсь добиться этого:

При посещении URL-адреса www.mydomain.com/directory/10 в браузере отображается страница www.mydomain.com/directory/?id=10 не изменяя внешний вид URL-адреса.

Однако указанный выше код создает ошибку внутреннего сервера 500.

Кто-нибудь знает, где я ошибаюсь?

Solutions Collecting From Web of "RewriteRule, создающий 500 внутренних ошибок сервера"

Гарантируется, что ваш код будет генерировать 500 внутренних ошибок сервера, поскольку он вызывает бесконечный цикл. Причина в том, что ваш соответствующий шаблон URI: ^directory/(.*)$

Что соответствует вашим URL до и после перезаписывания. И как только он достигает максимально допустимого внутреннего предела перезаписи, Apache выдает 500 внутренних ошибок сервера и выдает их.

Измените свой код на это:

 Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^directory/(.*)$ /directory/index.php?id=$1 [L,QSA,NC] 

У выше кода есть дополнительный RewriteCond %{REQUEST_FILENAME} !-f который будет /directory/index.php последующее выполнение RewriteRule после первого раза, так как /directory/index.php будет действительным файлом.

У меня такая же проблема, и я обнаружил, что модуль «переписать» еще не включен в моем случае. Поэтому мне нужно включить его, а затем перезапустить сервер Apache:

  • Включить модуль «переписать»: sudo a2enmod переписать
  • Затем перезапустите сервер apache: sudo service apache2 restart

Надеюсь, это поможет кому угодно.

Вы должны попробовать добавить косую черту вперед:

 RewriteRule ^/directory/(.*)$ directory/index.php?id=$1 

Я был пойман с этим раньше.

В качестве альтернативы используйте RewriteLog и RewriteLogLevel для отладки и посмотрите информацию об ошибках Apache и журналах доступа для получения дополнительной информации:

 RewriteLogLevel 3 RewriteLog ${APACHE_LOG_DIR}/rewrite.log 

Это оставит файл журнала в вашем каталоге журнала apache. В моем случае это /var/log/apache

Если вы используете CodeIgniter и проблемы с ошибкой 500. Следуйте за решением.

Таким образом, чтобы удалить сегмент «index.php» URL-адресов в CodeIgniter, вам нужно сделать 2 вещи. Первый – отредактировать файл /system/application/config/config.php , изменив значение политики index_page на пустое:

 $config['index_page'] = ''; 

Второй шаг – создать файл .htaccess

 RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ index.php/$1 [L] 

Вот и все! С этого момента URL-адреса вашего сайта / системы, созданные с помощью CodeIgniter, больше не будут иметь поток (называемый «раздражающим» некоторыми) «index.php».