it-swarm-id.com

apache mod_rewrite tidak berfungsi atau tidak diaktifkan

Saya telah menginstal rewrite_module dan memodifikasi php.ini di Apache.

Saya membuat file rewrite.php dan .htaccess, tetapi tidak berfungsi.

Folder sistem file saya seperti:

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

/var/www/html/.htaccess konten adalah:

$ 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 diinstal.

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

rewrite_module dimuat.

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

Pengaturan AllowOverride

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

    AllowOverride None

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

Coba pengaturan: "AllowOverride All". 

83
Jarrod

Silakan dicoba 

Sudo a2enmod rewrite

atau gunakan perintah restart Apache yang benar

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

Bekerja.

solusi saya adalah:

1. buat test.conf ke /etc/httpd/conf.d/test.conf

2. menulis beberapa aturan, seperti:

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

3. mulai kembali server Apache Anda.

4. coba lagi sendiri.

4
rc1021

Agar mod_rewrite berfungsi untuk saya di Apache 2.4, saya harus menambahkan baris "Wajib semua yang diberikan" di bawah ini.

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

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

seharusnya persyaratan serupa juga ada untuk Apache 2.2, jika Anda menggunakannya:

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

Perhatikan bahwa arahan ErrorDocument 404 terkadang dapat menimpa hal-hal ini juga, jadi jika itu tidak berfungsi, coba komentari direktif ErrorDocument Anda dan lihat apakah itu berfungsi. Contoh di atas dapat digunakan untuk memastikan situs tidak dilayani dari cache dengan memasukkan subfolder di path, meskipun file berada di root server.

1
Brad Parks

Pada centOS7 saya mengubah file /Etc/httpd/conf/httpd.conf

dari AllowOverride None untuk AllowOverride All

0
njoshsn