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

В настоящее время я использую хостинг с сервером lightpeed. Хостинг говорит, что mod_rewrite включен, но я не могу заставить мой script работать там. Всякий раз, когда я пытаюсь получить доступ к 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();

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

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

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

    #LoadModule rewrite_module modules/mod_rewrite.so

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

  • Перезапустите сервер Apache.

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

  • Ищите 'mod_rewrite' снова. Вы должны быть в состоянии найти его сейчас.

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

И mod_rewrite.php:

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

Ответ 5

Консоль

:

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

sudo a2enmod rewrite
sudo service apache2 restart

Ответ 6

Если

in_array('mod_rewrite', apache_get_modules())

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

Ответ 7

Если этот код находится в вашем файле .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 включен.

Ответ 8

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

<?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.

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

Ответ 9

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

      apache_get_modules

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

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

http://in2.php.net/apache_get_modules

Ответ 10

Если вы находитесь в системе 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

Ответ 11

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

$ sudo httpd -M |grep rewrite_module

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

Ответ 12

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

 <?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 и проверьте опцию перезаписи модуля