it-swarm.dev

Wie überprüfe ich, ob mod_rewrite auf dem Server aktiviert ist?

Derzeit verwende ich das Hosting mit dem lightspeed -Server. Das Hosting sagt, dass mod_rewrite aktiviert ist, aber ich kann mein Skript dort nicht zum Laufen bringen. Immer wenn ich versuche, auf die URL zuzugreifen, wird 404 - nicht gefunden Seite angezeigt.

Ich habe die gleichen Codes auf einen anderen Server gestellt, der mit Apache läuft. Es arbeitet dort drüben. Ich denke also, es ist die Ausgabe von .htaccess und mod_rewrite.

Der Hosting-Support besteht jedoch immer noch darauf, dass mod_rewrite aktiviert ist. Daher würde ich gerne wissen, wie ich überprüfen kann, ob es tatsächlich aktiviert ist oder nicht.

Ich habe versucht, mit phpinfo() zu überprüfen, aber kein Glück, ich kann mod_rewrite dort nicht finden, liegt es daran, dass sie lightspeed verwenden?

Gibt es eine Möglichkeit zu überprüfen? Bitte hilf mir. Vielen Dank.

FYI: Mein .htaccess-Code ist

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>

Ich habe es auch so versucht

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]

Aber das gleiche Ergebnis.

84
knightrider
  1. Um zu überprüfen, ob das Modul mod_rewrite aktiviert ist, erstellen Sie eine neue PHP-Datei in Ihrem Stammordner Ihres WAMP-Servers. Gebe folgendes ein

    phpinfo();

  2. Greifen Sie über Ihren Browser auf Ihre erstellte Datei zu.

  3. CtrlF eine Suche eröffnen. Suchen Sie nach 'mod_rewrite'. Wenn es aktiviert ist, sehen Sie es als "geladene Module"

  4. Wenn nicht, öffnen Sie httpd.conf (Apache Config-Datei) und suchen Sie nach der folgenden Zeile.

    #LoadModule rewrite_module modules/mod_rewrite.so

  5. Entfernen Sie zu Beginn das Nummernzeichen ('#') und speichern Sie die Datei.

  6. Starten Sie Ihren Apache-Server neu.

  7. Greifen Sie auf die gleiche PHP-Datei in Ihrem Browser zu.

  8. Suchen Sie erneut nach 'mod_rewrite'. Sie sollten es jetzt finden können.

85
Fadzly Othman

geben Sie in die Befehlszeile ein 

Sudo a2enmod umschreiben

wenn der Überschreibmodus bereits aktiviert ist, werden Sie dies erfahren!

57
KawaiKx

Wenn Sie eine Konfigurationsdatei für virtuelle Hosts verwenden, stellen Sie sicher, dass der betreffende virtuelle Host die Direktive AllowOverride All wie folgt hat:

<VirtualHost *:80>
        ...
    <Directory "directory/of/your/.htaccess">
        AllowOverride All
    </Directory>
</VirtualHost>
50
Jahmic

Wenn Apache_get_modules () nicht erkannt wird oder keine Informationen zu diesem Modul in phpinfo (); Versuchen Sie, das Umschreiben von Moden zu testen, indem Sie diese Zeilen in Ihre .htaccess-Datei einfügen:

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

Und mod_rewrite.php:

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

konsole: 

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

Sudo a2enmod rewrite
Sudo service Apache2 restart
12
BlocksByLukas

Ob 

in_array('mod_rewrite', Apache_get_modules())

gibt true zurück, dann ist Mod-Rewrite aktiviert.

11
Shivanshu

Wenn sich dieser Code in Ihrer .htaccess-Datei befindet (ohne Prüfung auf 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]

und Sie können jede Seite Ihrer Website mit einem 500-Server-Fehler aufrufen.

8
Clive

sie können es am Terminal machen:

apachectl -M
Apache2ctl -M

ab 2daygeek

8
Adi Prasetyo

Die perdefinierte Funktion Apache_get_modules() von PHP gibt eine Liste der aktivierten Module zurück. Um zu überprüfen, ob mod_rewrite aktiviert ist, können Sie das folgende Skript auf Ihrem Server ausführen:

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

Wenn das obige Beispiel fehlschlägt, können Sie Mod-Rewrite mithilfe Ihrer .htaccess-Datei überprüfen. 

Erstellen Sie eine htaccess-Datei im Dokumentstammverzeichnis und fügen Sie die folgende rewriteRule hinzu:

RewriteEngine on

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

Besuchen Sie jetzt http://example.com/HelloWorld . Sie werden intern zur Seite /index.php Ihrer Site weitergeleitet. Andernfalls erhalten Sie bei einem Deaktivieren von Mod-Rewrite einen Fehler mit 500 Internel-Servern. 

Hoffe das hilft. 

7
starkeen

Das funktioniert auf CentOS:

$ Sudo httpd -M |grep rewrite_module

Sollte rewrite_module (shared) ausgeben

5
radtek

Wenn Sie sich in einem Linux-System befinden, können Sie alle Aktivierungsmodule für Apache2 (in meinem Fall) im folgenden Ordner überprüfen:/etc/Apache2/mods-available

cd /etc/Apache2/mods-available

eingeben: ll -a
wenn Sie die verfügbaren Module für php prüfen wollen (in diesem Fall php 7) Ordner /etc/php/7.0/mods-available

cd /etc/php/7.0/mods-available

eingeben: ll -a

4
3p3ch3

Sie können die PHP-Funktion verwenden 

      Apache_get_modules

und prüfe auf mod_rewrite

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

http://in2.php.net/Apache_get_modules

4
Miqdad Ali

machen Sie einfach eine neue Seite und fügen Sie diesen Code hinzu

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

und führen Sie diese Seite aus. Finden Sie dann wissen, ob das Modul verfügbar ist. Wenn nicht, können Sie Ihr Hosting anfragen. Wenn Sie es auf dem lokalen Computer aktivieren möchten, überprüfen Sie dieses schrittweise beschriebene Youtube-Tutorial, um das Überschreibungsmodul in Apache zu aktivieren https://youtu.be/xIspOX9FuVU?t=1m43s Wamp-Server-Symbol -> Apache -> Apache-Module und aktivieren Sie die Option zum Umschreiben des Moduls 

3
Hassan Saeed

Ich weiß, dass diese Frage alt ist, aber wenn Sie Ihre Apache-Konfigurationsdatei in AllowOverride All von AllowOverride None bearbeiten können

<Directory "${SRVROOT}/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.Apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>
1

Sie müssen nur prüfen, ob die Datei vorhanden ist, indem Sie sie eingeben

cat /etc/Apache2/mods-available/rewrite.load

Die Ergebniszeile darf nicht mit # beginnen.

Ich hatte das genaue Problem, ich habe es gelöst, indem ich auf benutzerdefinierte Struktur geklickt und dann /index.php/%postname%/ hinzugefügt habe, und es funktioniert

Ich hoffe, das erspart jemandem den Stress, den ich durchgemacht habe, um herauszufinden, was zum Teufel damit los war.

0
Kyle S

Dieser Code hat für mich funktioniert:

if (strpos(Shell_exec('/usr/local/Apache/bin/apachectl -l'), 'mod_rewrite') !== false) echo "mod_rewrite enabled";
else echo "mod_rewrite disabled";
0
Keinan Goichman