Php 关于流浪汉的修改问题

Php 关于流浪汉的修改问题,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我刚搬到流浪汉,已经建立了一个灯塔,到目前为止我真的很高兴。我遇到的唯一问题是mod_重写。我已经确认mod_rewrite已经打开,并且可以重定向 以下代码在我的vhost文件中: <VirtualHost *:80> ServerName devserver.local DocumentRoot /var/www/public_html <Directory /> Options FollowSymLinks

我刚搬到流浪汉,已经建立了一个灯塔,到目前为止我真的很高兴。我遇到的唯一问题是mod_重写。我已经确认mod_rewrite已经打开,并且可以重定向

以下代码在我的vhost文件中:

<VirtualHost *:80>
    ServerName devserver.local
    DocumentRoot /var/www/public_html

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

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

    ErrorLog /var/log/apache2/vagrant_dev-error.log
    LogLevel warn
    CustomLog /var/log/apache2/vagrant_dev-access.log combined
</VirtualHost>
因此,它检测tools.php退出并在运行my.htaccess文件之前加载该文件

我不认为这是一个具体的流浪问题,它可能只是Apache或mod_rewrite中的一个设置,我需要打开/关闭或配置。以前有人经历过吗

解决方案

正如Jon Lin在下面提到的,这是一个启用了
MultiViews
的问题。我选择在vhosts文件中禁用它,而不是Jon建议直接从.htaccess禁用它。两者都起作用了

<VirtualHost *:80>
    ServerName devserver.local
    DocumentRoot /var/www/public_html

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

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

    ErrorLog /var/log/apache2/vagrant_dev-error.log
    LogLevel warn
    CustomLog /var/log/apache2/vagrant_dev-access.log combined
</VirtualHost>

ServerName devserver.local
DocumentRoot/var/www/public\u html
选项如下符号链接
不允许超限
选项索引跟随符号链接
允许超越所有
命令允许,拒绝
通融
ErrorLog/var/log/apache2/vagrant_dev-error.log
日志级别警告
CustomLog/var/log/apache2/vagrant_dev-access.log组合

这听起来像是一个多视图问题。多视图是mod_协商的一部分,它试图“猜测”URL可以映射到的资源。因此,当它在URL中看到
/tools/
,并看到文件
/tools.php
,它将直接将请求映射到php文件,从而完全绕过mod_rewrite

尝试将此添加到您的htaccess文件:

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^tools\/([a-zA-Z_]+)\.json$ tools.php?tool=$1 [QSA,L]

</IfModule>
Options -Multiviews

你们是如何安装这盏灯的?流浪者不能影响apache的工作。@Cheery我安装了我需要的每个模块。。Apache、PHP、MySQL等都是单独的。我不认为这是一个特定于流浪汉的问题,可能只是我需要在mod_rewrite中配置的一个设置,以便在加载tools/时它不会默认为tools.php。就是这样!我在vhosts文件中禁用了它。我会用答案更新我上面的问题
Options -Multiviews