Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache简单重写规则在httpd-vhosts.conf中运行良好,但在.htaccess文件中运行不好_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Apache简单重写规则在httpd-vhosts.conf中运行良好,但在.htaccess文件中运行不好

Apache简单重写规则在httpd-vhosts.conf中运行良好,但在.htaccess文件中运行不好,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,Apache 2.4、Windows 10 httpd-vhosts.conf中的虚拟主机: <VirtualHost sporemvc:80> ServerAdmin jakub.sawczuk@gmail.com DocumentRoot "C:/Apache24vhosts/hosts/sporemvc" ServerName sporemvc ErrorLog "logs/sporemvc-error.log" CustomLog "l

Apache 2.4、Windows 10

httpd-vhosts.conf中的虚拟主机:

<VirtualHost sporemvc:80>
    ServerAdmin jakub.sawczuk@gmail.com
    DocumentRoot "C:/Apache24vhosts/hosts/sporemvc"
    ServerName sporemvc
    ErrorLog "logs/sporemvc-error.log"
    CustomLog "logs/sporemvc-access.log" common
    <Directory C:/Apache24vhosts/hosts/sporemvc>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ /index.php [L]
    </Directory>
</VirtualHost>
重写规则似乎根本不起作用——Apache说是404。有什么问题吗?我确保mod_rewrite处于启用状态,即使是这样。htaccess是ANSI而不是UTF。在Apache和vhost的日志中,只有404

我做错了什么?

是的,我很笨

它是
AllowOverride
无需更改为
AllowOverride All
(好吧,
All
可以开发)


原因:finita。

您需要启用
.htaccess
样式文件的解释。看看他们的文档:除此之外,如果您能够访问并控制真正的http主机配置,为什么要使用
.htaccess
样式的文件?这些文件只会产生问题并降低服务器速度。您好,谢谢回复。要回答您关于
.htaccess
的问题,我可以控制开发web serwer,没错。但我可能没有在受控环境中。另外,
conf
中的此设置需要重新启动服务器,这在生产环境中可能不太方便。在生产环境中重新启动apache http服务器根本不是问题。这就是
优雅的
命令的作用。相反:在生产环境中摆弄
.htaccess
样式的文件会带来更大的风险:一旦保存,它们就是生命,可能会破坏整个服务器。游戏结束了。但是,如果您使用的是Apache基金会推荐的主机配置,那么您可以在测试之前正确地测试语法正确性的更改。只需看看http服务器提供的控制选项。
<VirtualHost sporemvc:80>
    ServerAdmin jakub.sawczuk@gmail.com
    DocumentRoot "C:/Apache24vhosts/hosts/sporemvc"
    ServerName sporemvc
    ErrorLog "logs/sporemvc-error.log"
    CustomLog "logs/sporemvc-access.log" common
</VirtualHost>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]