【问题标题】:silex, .htaccess, webhosting doesn't worksilex,.htaccess,虚拟主机不起作用
【发布时间】:2015-12-06 21:56:28
【问题描述】:

这是我在本地机器和虚拟主机上的 .htaccess 文件,在本地一切正常,但在虚拟主机上我只能像 example.com/web/index.php 一样访问 web/index.php

<IfModule mod_rewrite.c>
    Options -MultiViews

    RewriteEngine On
    RewriteBase /web/index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [QSA,L]
</IfModule>

【问题讨论】:

  • 您确定在您的托管服务器上启用了 htaccess 文件,并且您确定它们使用的是 apache?

标签: php .htaccess web-hosting silex


【解决方案1】:

你的 RewriteBase 不正确,你应该只放目录,而不是文件名。此外,如果您的根项目是 Web 项目,那么您的重写基础应该只是 / 并且在重写规则中您应该告诉 apache 重定向您的所有请求。所以,你应该使用类似的东西:

<IfModule mod_rewrite.c>
    Options -MultiViews

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^.*$ /web/index.php [QSA,L]
</IfModule>

但请记住,只有您的 Web 文件夹必须可公开访问,而不是您的整个项目。如果可以的话,你应该改变它(否则你应该把一个 .htaccess 文件放在根项目中,另一个放在 web 文件夹中,但这超出了你的问题的范围)。

【讨论】:

  • 谢谢,所以我应该给除 web/index.php 之外的所有文件,用户权限执行,而不是读/写,是吗?感谢您的回答,我今天/明天会检查它,顺便说一句,我已经要求支持他们回答我说一切都应该正常,我有不正确的 .htaccess
  • 是的,您的 .htacess 文件不正确,您的 RewriteBase 不正确。至于文件权限,你可以使用2个.htaccess,一个拒绝根文件夹中的所有内容,一个类似于我在web文件夹中给你的示例(那么你的RewriteBase应该是@987654322 @)。您不需要触摸文件权限。但这有点偏离你的问题:-)
  • 谢谢,.httaccess 我从 silex 获取的,这就是为什么我想知道为什么它不起作用
猜你喜欢
  • 2016-09-29
  • 2018-05-09
  • 1970-01-01
  • 1970-01-01
  • 2014-04-22
  • 2012-10-05
  • 2015-02-25
  • 2022-01-12
  • 2013-07-29
相关资源
最近更新 更多