2017-04-10 101 views
0

我在Ubuntu 16上有一个本地主机。在根本地主机目录(/ var/www/html /)中,我把这个htaccess文件。本地主机上的.htaccess文件

AddDefaultCharset utf-8 
RewriteEngine on 
RewriteRule ^index?$ index.php 

当我键入localhost/index阿帕奇说我

The requested URL /index was not found on this server.

的是,在Apache配置错误?

基本上我想在我的网站的根目录下重定向到index.php,在这里我想解析一下像这样的localhost/cart/item/1到数组,然后实现MVC。我是网络开发新手,不要真正理解我该怎么做,请帮助我。

回答

0

您必须首先启用对此类动态配置文件的解释(“.htaccess”样式文件)。它们在默认情况下是禁用的,因为它们会显着减慢服务器速度。通常最好将这些规则直接放在服务器的静态配置文件中。

为了让他们看看在AllowOverride命令:https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride

<Directory "/var/www/html"> 
    AllowOverride All 
</Directory> 

所以,因为你必须修改配置反正...你为什么不把你的重写规则在那里呢?更简单,更强大,更快的太...

除此之外,有时是为了实现这样的方式重写规则,他们在工作都位置,在HTTP服务器(虚拟)主机配置和动态配置一个好主意文件:

RewriteEngine on 
RewriteRule ^/?index/?$ index.php [L] 

而且一般提示:你应该总是喜欢在http服务器主机配置,而不是使用动态配置文件(“的.htaccess”)中这样的规则。这些文件出了名的错误,很难调试,他们真的放慢了服务器。它们仅作为最后一种选择,用于您无法控制主机配置的情况(阅读:真正便宜的托管服务提供商),或者您拥有依赖编写自己的重写规则的应用程序(这是一个明显的安全噩梦)。

+0

谢谢,它帮助了我。而且,我运行了这个命令:a2enmode rewrite。 –

+0

当然,重写模块也必须启用。否则,一旦考虑规则,你会得到一个语法错误。 – arkascha

0

也许你需要创建一个文件夹,然后在你的应用程序里面工作。例如:

  • 创建一个var/www/html/project;
  • 把你.htaccess里面;
  • 使用您的应用程序在该文件夹中。