如何激活mod_rewrite?

ein*_*ein 10 php apache mod-rewrite

我知道这个问题已被问过好几次了.但我无法让它发挥作用.

我在我的Ubuntu服务器上安装了Apache2我还可以确认使用phpinfo();安装了mod_rewrite.我还在我的根文件夹(/var/www/.htaccess)中放了一个名为.htaccess的文件.在我的.htaccess文件中,我粘贴以下代码:

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^.*$ test.php
Run Code Online (Sandbox Code Playgroud)

所以一切都被重定向到test.php

但它仍然无效.所以我检查了/ etc/apache2下的httpd.conf文件.它是完全空的,没有代码行(这对我来说有点奇怪)?!但是在检查Stackoverflow答案时,httpd.conf中至少应该包含以下代码:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
    Satisfy all
</Directory>
Run Code Online (Sandbox Code Playgroud)

所以我将该代码粘贴到httpd.conf中.并重新启动Apache sudo /etc/init.d/apache restart.它仍然不起作用?

我还测试打开文件//000-默认并启用站点-/网站可用/默认情况下,所有虚拟主机设置的谎言和改变的目录下/var/www,并/给了AllowOverride全部.mod_rewrite仍然无法正常工作.谁能帮帮我吗.这个问题一直在烘烤我的坚果.

另外,我的apache2.conf文件不起作用.我试着写som废话.它仍然给我正常结果而不是http 500错误

bin*_*680 10

如果你运行这个命令,

sudo a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)

ubuntu将在激活或已经运行时输出.


Oli*_*ons 7

来自Niels Bom的所有建议都是最聪明的(我认为).但我会将此添加为第一个建议:尝试通过Ubuntu命令启动并停止apache:然后当它应该停止时,确保它已停止,即验证您的本地页面不再显示.

  • 阅读文件夹中的内容/etc/apache2/.应该有apache2.conf conf.d envvars httpd.conf mods-available mods-enabled ports.conf sites-available sites-enabled
  • 然后,如果一切正常,看看mods-enabled如果启用了mods你会在哪里找到,然后你可以继续,否则看看有关启用modrewrite的其他答案
  • 看看sites-enabled:在哪里你可以找到启用了...(猜猜是什么?)的网站.应该有default网站.
  • 如果是这样,打开这个文件,并尝试将apache废话放入其中,重新启动服务器并查看它是否满意.如果它不开心那么好.如果它很高兴那么你正在处理错误的文件
  • last:尝试检查此默认vhost的htaccess文件的授权是什么.以下是它们的工作方式:如果Apache在vhost文件中找不到任何指令,它将应用全局配置.所以我建议在你的vhost文件中,在<virtualhost>- </virtualhost>标签之间添加配置(当然).

请告诉我发生了什么,我很乐意相应地更新我的问题.


Sli*_*liq 5

因为这个帖子在google上排名很高,这里有另一个解决方案:

是什么导致了这个问题?

这是因为apache中的标准定义只是阻止所有.htaccess的东西.Seriouslsy.这似乎是Ubuntu 12.04 LTS的初始状态.

在/ etc/apache2/sites-available/default(这是一个文件,而不是一个文件夹)中有一个代码块就像

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride XXXXXXXXXXXXXXXXXXX
    Order allow,deny
    allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

在这里你应该改变

AllowOverride None
Run Code Online (Sandbox Code Playgroud)

AllowOverride All
Run Code Online (Sandbox Code Playgroud)

重要

你必须使用sudo权限进行这些更改,否则Ubuntu将不会保存文件.在RESTART之后,你的.htaccess东西应该可行.要测试.htaccess只需将一些无意义的文本放入其中并浏览localhost或127.0.0.1 - >如果您看到"内部服务器错误":瞧!删除废话,你准备好了.