Php 关于流浪汉的修改问题
我刚搬到流浪汉,已经建立了一个灯塔,到目前为止我真的很高兴。我遇到的唯一问题是mod_重写。我已经确认mod_rewrite已经打开,并且可以重定向 以下代码在我的vhost文件中: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
<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