我在Apache上安装了rewrite_module并修改了php.ini
。
我创建了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="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><< <a href="http://www.webune.com/forums/viewtopic-p-62.html">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>
答案 0 :(得分:85)
尝试设置:“AllowOverride All”。
答案 1 :(得分:11)
请尝试
sudo a2enmod rewrite
或使用正确的apache restart命令
sudo /etc/init.d/apache2 restart
答案 2 :(得分:4)
它正在运作。
我的解决方案是:
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.再次自己。
答案 3 :(得分:1)
为了让mod_rewrite在Apache 2.4中为我工作,我必须在下面添加“Require all granted”行。
<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指令并查看它是否有效。上面的示例可用于通过在路径中包含子文件夹来确保不通过缓存提供站点,尽管文件位于服务器的根目录。
答案 4 :(得分:0)
在centOS7上我更改了文件 /etc/httpd/conf/httpd.conf中
来自AllowOverride的无 to AllowOverride All