it-swarm.com.de

apache mod_rewrite funktioniert nicht oder ist nicht aktiviert

Ich habe rewrite_module installiert und php.ini auf Apache geändert.

Ich erstelle rewrite.php- und .htaccess-Dateien, aber es funktioniert nicht.

Meine Dateisystemordner wie:

/var/www/html
/var/www/html/test
/var/www/html/test/.htaccess
/var/www/html/test/rewrite.php

/var/www/html/.htaccess Inhalt ist:

$ cat /var/www/html/test/.htaccess 

RewriteEngine On 
RewriteRule ^link([^/]*).html$ rewrite.php?link=$1 [L]

/var/www/html/rewrite.php

$ cat /var/www/html/test/rewrite.php 

<html>
<h2 align=center> 
<?php 
// mod_rewrite Test Page 
// Copyright 2006 Webune.com 
if($_GET['link']==1){echo"You are not using mod_rewrite";} 
elseif($_GET['link']==2){echo"Congratulations!! You are using Apache mod_rewrite";} 
else{echo"Linux Apache mod_rewrte Test Tutorial";} 
?> 
</h2> 
<hr> 
<head> 
<title>How To Test mod_rewrite in Apache Linux Server</title> 
</head> 
<body> 
<p align="center">by <a href="http://www.webune.com">Webune</a></p> 
<p><a href="rewrite.php?link=1">LINK1</a> = rewrite.php?link=1</p>
<p><a href="link2.html">LINK2</a> = link2.html</p> 
<p>How this works: both links are for this same page, except they both are different. link one is without the mod_rewrite and link2 is using mod_rewrite. Link1 show the php file, with with mod_rewrite we are mascarading the php file into a html file. you can use whatever type of extension you want, you can change it to .htm or .shtml etc... all you have to do is to make sure you also chang it in the .htaccess file</p> 
<p>&lt;&lt; <a href="http://www.webune.com/forums/viewtopic-p-62.html">Go back to webune forums.</a></p> 
</body> 
</html>

mod_rewrite.so ist installiert.

$ ls -l mod_rewrite.so
-rwxr-xr-x 1 root root 59256 Sep 20 23:34 mod_rewrite.so

rewrite_module wird geladen.

$ cat /etc/httpd/conf/httpd.conf | grep mod_rewrite.so
LoadModule rewrite_module modules/mod_rewrite.so

AllowOverride-Einstellung

$ cat /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
    Options Indexes FollowSymLinks

    AllowOverride None

    Order allow,deny
    Allow from all
</Directory>
42
rc1021

Versuchen Sie die Einstellung: "AllowOverride All". 

83
Jarrod

Bitte versuche 

Sudo a2enmod rewrite

oder verwenden Sie den korrekten Apache-Neustartbefehl

Sudo /etc/init.d/Apache2 restart 
10
ASHOK

Es funktioniert.

meine Lösung ist:

1.Erstellen Sie eine test.conf in /etc/httpd/conf.d/test.conf

2. schrieb eine Regel wie:

<Directory "/var/www/html/test">
RewriteEngine On
RewriteRule ^link([^/]*).html$ rewrite.php?link=$1 [L]
</Directory>

3.Starten Sie Ihren Apache-Server neu.

Versuchen Sie es erneut.

4
rc1021

Damit mod_rewrite in Apache 2.4 für mich funktioniert, musste ich die Zeile "Require all allow" hinzufügen.

<Directory /var/www>
   # Required if running Apache > 2.4
   Require all granted

   RewriteEngine on 
   RewriteRule ^cachebust-([a-z0-9]+)\/(.*) /$2 [L] 
 </Directory>

vermutlich besteht eine ähnliche Anforderung auch für Apache 2.2, wenn Sie das verwenden:

<Directory /var/www>
   # Required if running Apache 2.2
   Order allow,deny
   Allow from all

   RewriteEngine on 
   RewriteRule ^cachebust-([a-z0-9]+)\/(.*) /$2 [L] 
 </Directory>

Beachten Sie, dass eine ErrorDocument 404-Direktive diese Dinge manchmal auch überschreiben kann. Wenn dies nicht funktioniert, sollten Sie die ErrorDocument-Direktive auskommentieren und prüfen, ob sie funktioniert. Das obige Beispiel kann verwendet werden, um sicherzustellen, dass eine Site nicht vom Cache aus bedient wird, indem ein Unterordner in den Pfad eingefügt wird. Die Dateien befinden sich jedoch im Stammverzeichnis des Servers.

1
Brad Parks

Auf centOS7 habe ich die Datei geändert/Etc/httpd/conf/httpd.conf

von AllowOverride Keine AllowOverride All

0
njoshsn