Ответ 1
Я написал об этом в статье: http://www.jarrodoberto.com/articles/2011/11/enabling-mod-rewrite-on-ubuntu
Попробуйте установить: "AllowOverride All".
Я установил rewrite_module и изменил php.ini
на Apache.
Я создаю файлы rewrite.php
и .htaccess
, но не работает.
/var/www/html
/var/www/html/test
/var/www/html/test/.htaccess
/var/www/html/test/rewrite.php
Содержимое $ cat /var/www/html/test/.htaccess
RewriteEngine On
RewriteRule ^link([^/]*).html$ rewrite.php?link=$1 [L]
$ 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="#" onclick="location.href='http://www.webune.com'; return false;">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><< <a href="#" onclick="location.href='http://www.webune.com/forums/viewtopic-p-62.html'; return false;">Go back to webune forums.</a></p>
</body>
</html>
$ ls -l mod_rewrite.so
-rwxr-xr-x 1 root root 59256 Sep 20 23:34 mod_rewrite.so
Загружается $ cat /etc/httpd/conf/httpd.conf | grep mod_rewrite.so
LoadModule rewrite_module modules/mod_rewrite.so
$ cat /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Я написал об этом в статье: http://www.jarrodoberto.com/articles/2011/11/enabling-mod-rewrite-on-ubuntu
Попробуйте установить: "AllowOverride All".
Попробуйте
sudo a2enmod rewrite
или используйте правильную команду перезапуска apache
sudo /etc/init.d/apache2 restart
Работает.
Мое решение:
1.Создайте test.conf в /etc/httpd/conf.d/test.conf
2.подписано какое-то правило, например:
<Directory "/var/www/html/test">
RewriteEngine On
RewriteRule ^link([^/]*).html$ rewrite.php?link=$1 [L]
</Directory>
3. Перезагрузите сервер Apache.
4. снова попробуйте себя.
Чтобы mod_rewrite работал у меня в Apache 2.4, мне пришлось добавить строку "Требовать все предоставленные" ниже.
<Directory /var/www>
# Required if running apache > 2.4
Require all granted
RewriteEngine on
RewriteRule ^cachebust-([a-z0-9]+)\/(.*) /$2 [L]
</Directory>
предположительно аналогичное требование существует и для Apache 2.2, если вы используете это:
<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>
Обратите внимание, что директива ErrorDocument 404
иногда может переопределять эти вещи, поэтому, если она не работает, попробуйте прокомментировать вашу директиву ErrorDocument и посмотреть, работает ли она. Вышеприведенный пример может использоваться для обеспечения того, чтобы сайт не был загружен из кеша, включая вложенную папку в пути, хотя файлы находятся в корневом каталоге сервера.
В centOS7 я изменил файл /etc/httpd/conf/httpd.conf
из AllowOverride Нет для AllowOverride All