Apache和重写模块

时间:2010-06-13 14:48:08

标签: apache mod-rewrite

我在 / var / www 目录中创建了一个文件.htaccess。权利是“root root --wxrwxrwxr”。

该文件的内容是:

Options +FollowSymlinks
RewriteEngine on
RewriteLogLevel 3
RewriteLog "/var/log/apache2/rewrite.log"
RewriteRule ^(.*?)$ testphp.php

当我调用页面phpinfo.php时,我得到了:加载模块... mod_rewrite ... 因此,模块已加载。

每次修改后,我都会使用sudo /etc/init.d/apache2 restart手动重新启动服务器。

error.log提供

  

配置了Suhosin-Patch的Apache / 2.2.14(Ubuntu)PHP / 5.3.2-1ubuntu4.2 - 恢复正常操作

当我调用any.htm或anyone.php页面时,rewrite.log确实不包含任何内容,并调用真实页面。如果我理解,页面anyone.php应替换为testphp.php

我做错了吗?

由于

2 个答案:

答案 0 :(得分:0)

如果我是一个Web服务器,我会忽略任何世界可写的配置文件,以确保稳定性和安全性。我知道Apache中的地方正是这样做的;我忘了.htaccess处理是否是那些地方之一,但我认为/希望它是。

答案 1 :(得分:0)

感谢您的帮助

以下是我使用重写规则运行Apache2服务器的方法:

  1. 我从新硬盘重新安装了服务器
  2. 我用'sudo a2enmod rewrite'
  3. 激活了Rewrite
  4. 我使用以下规则创建了文件'.htaccess':

    RewriteEngine On
    RewriteRules ^(.*)$ test.php
    
  5. 在“/ etc / apache2 / sites-available / default”中,我在目录/

    中添加了
    AllowOverride all
    Order deny,allow
    Allow from all
    

    并在目录“/ var / www”中,相同的2行。我不知道为什么,但规则RewriteLog n没有在.htaccess中说出来。在“/ var / www”中,我创建了2个文件,index.html(默认值)和test.php。 test.php包含

    <?php phpinfo(); ?>
    

    当我调用页面index.html时,会显示php信息

    再一次,谢谢。