Как проверить, включен ли mod_rewrite на сервере?

В настоящее время я использую хостинг с сервером speedpeed . Хостинг говорит, что mod_rewrite включен, но я не могу заставить работать мой скрипт. Всякий раз, когда я пытаюсь получить доступ к URL-адресу, он возвращает 404 – не найденную страницу.

Я помещаю те же коды на другой сервер, который работает с Apache. Он работает там. Поэтому я предполагаю, что это проблема .htaccess и mod_rewrite .

Но поддержка хостинга по-прежнему настаивает на том, что их mod_rewrite включен, поэтому я хотел бы знать, как я могу проверить, действительно ли он включен или нет.

Я пытался проверить с помощью phpinfo() , но не повезло, я не могу найти там mod_rewrite , потому что они используют lightspeed ?

Есть ли способ проверить? Пожалуйста, помогите мне. Спасибо.

FYI: мой код .htaccess

 Options -Indexes <IfModule mod_rewrite.c> DirectoryIndex index.php RewriteEngine on RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] </IfModule> 

Я тоже так пробовал

 DirectoryIndex index.php RewriteEngine on RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 

Но такой же результат.

  1. Чтобы проверить, включен ли модуль mod_rewrite, создайте новый php-файл в корневой папке вашего WAMP-сервера. Введите следующее

    phpinfo();

  2. Получите доступ к созданному файлу из своего браузера.

  3. Ctrl F, чтобы открыть поиск. Найдите 'mod_rewrite'. Если он включен, вы видите его как «Загруженные модули»,

  4. Если нет, откройте httpd.conf (файл конфигурации Apache) и найдите следующую строку.

    #LoadModule rewrite_module modules/mod_rewrite.so

  5. Удалите знак фунта ('#') в начале и сохраните этот файл.

  6. Перезагрузите сервер Apache.

  7. Доступ к одному и тому же файлу php в вашем браузере.

  8. Ищите 'mod_rewrite' снова. Теперь вы сможете найти его.

Если вы используете файл конфигурации виртуальных хостов, убедитесь, что у виртуального хоста есть директива AllowOverride All где-то вроде этого:

 <VirtualHost *:80> ... <Directory ...> AllowOverride All </Directory> </VirtualHost> 

из командной строки, введите

sudo a2enmod переписать

если режим перезаписи уже включен, он скажет вам об этом!

Если apache_get_modules () не распознан или нет информации об этом модуле в phpinfo (); попробуйте протестировать mod rewrite, добавив эти строки в ваш файл .htaccess:

 RewriteEngine On RewriteRule ^.*$ mod_rewrite.php 

И mod_rewrite.php:

 <?php echo "Mod_rewrite is activated!"; ?> 

консоль:

 <VirtualHost *:80> ... <Directory ...> AllowOverride All </Directory> </VirtualHost> sudo a2enmod rewrite sudo service apache2 restart 

Если

 in_array('mod_rewrite', apache_get_modules()) 

возвращает true тогда mod-rewrite включен.

Если этот код находится в вашем файле .htaccess (без проверки на mod_rewrite.c)

 DirectoryIndex index.php RewriteEngine on RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 

и вы можете посетить любую страницу на своем сайте с получением ошибки 500 серверов. Я думаю, что можно с уверенностью сказать, что mod rewrite включен.

Переопределенная функция apache_get_modules() PHP возвращает список включенных модулей. Чтобы проверить, включен ли mod_rewrite , вы можете запустить следующий скрипт на своем сервере:

 <?php print_r(apache_get_modules()); ?> 

Если приведенный выше пример не удается, вы можете проверить mod-rewrite, используя файл .htaccess .

Создайте файл htaccess в корне документа и добавьте следующий rewriteRule:

 RewriteEngine on RewriteRule ^helloWorld/?$ /index.php [NC,L] 

Теперь посетите http://example.com/HelloWorld , вы будете внутренне перенаправлены на страницу /index.php вашего сайта. В противном случае, если mod-rewrite отключен, вы получите 500 ошибок сервера Internel.

Надеюсь это поможет.

Вы можете использовать функцию php

  apache_get_modules 

и проверьте наличие mod_rewrite

 <pre> <?php print_r(apache_get_modules()); ?> </pre> 

http://in2.php.net/apache_get_modules

Если вы находитесь в системе Linux, вы можете проверить все модули включения для apache2 (в моем случае) в следующей папке: / etc / apache2 / mods-available

 cd /etc/apache2/mods-available 

для ввода: ll -a
если вы хотите проверить доступные модули для php (в данном случае php 7) папки /etc/php/7.0/mods-available

 cd /etc/php/7.0/mods-available 

для ввода: ll -a

Это работает на CentOS:

 $ sudo httpd -M |grep rewrite_module 

Должен вывести rewrite_module (shared)

просто создайте новую страницу и добавьте этот код

  <?php if(!function_exists('apache_get_modules') ){ phpinfo(); exit; } $res = 'Module Unavailable'; if(in_array('mod_rewrite',apache_get_modules())) $res = 'Module Available'; ?> <html> <head> <title>A mod_rewrite availability check !</title></head> <body> <p><?php echo apache_get_version(),"</p><p>mod_rewrite $res"; ?></p> </body> </html> 

и запустите эту страницу, затем найдите, сможет ли модуль узнать, доступен ли он или нет, если нет, то вы можете спросить о своем хостинге или включить его на локальном компьютере, а затем пометьте этот шаг пошагового руководства, чтобы включить модуль перезаписи в wamp apache https://youtu.be/xIspOX9FuVU?t=1m43s Значок сервера Wamp -> Apache -> Модули Apache и проверьте параметр перезаписи