mod_rewrite已启用,但不起作用


17

我正在尝试建立一个PHP路由库。他们给出了一个.htaccess文件的示例:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

我无法使它正常工作,因此我尝试启用了mod_rewrite,但显示“模块重写已启用”。

为什么不能正常工作?谢谢!我正在运行Ubuntu Precise 12.04和apache2.2.22。(检查是否有任何更新)

编辑:更多细节,这是PuPHPet无所事事的版本,应启用重写功能。

Answers:


33

您需要允许覆盖。

<Directory "/path/to/document/root/">
  AllowOverride All
  Allow from All
</Directory>

5
这是不必要的。仅AllowOverride对于所涉及的配置是必需的。 Allow from All与该问题无关,并且可能不适用于@randomdev的环境。
2015年

1
<Directory "/path/to/document/root/">我忘了更改/path/to/document/root/为项目根目录。谢谢!
Abhishek

16

首先,将httpd配置设置为此(路径可能彼此不同。在我的ubuntu中,它位于/ etc / apache2 / sites-available / default):

DocumentRoot /var/www

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
</Directory>

之后,您应该使用以下命令启用mod_rewrite

sudo a2enmod rewrite

最后一个,重新启动apache服务:

sudo service apache2 restart

为了确保这一点,您可以从phpinfoConfiguration> apache2handler> Loaded Modules中再次进行检查,必须编写mod_rewrite该文件,这意味着已启用mod_rewrite。


这应该在虚拟主机元素中吗?
jjxtra


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.