【问题标题】:.htaccess not working on Ubuntu Server x64.htaccess 在 Ubuntu Server x64 上不起作用
【发布时间】:2014-12-02 21:24:41
【问题描述】:

我在 XAMPP (Windows 8) 上开发了一个应用程序。现在我把它移到了一个带有 Ubuntu Server x64 的虚拟机上,重写不再起作用了。
我希望始终在根文件夹 (/var/www/html) 中调用 index.php,除非文件 (http://10.0.0.XX/any_path/filename) 存在于文件夹 /var/www/html/app/web/ 中(例如 /var/www/ html/app/web/any_path/文件名)。
这是我的 .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteRule ^[A-z/]*$ index.php [L]

RewriteCond %{DOCUMENT_ROOT}/app/web/%{REQUEST_URI} -f
RewriteRule ^(.+)$ app/web/$1 [L]
</IfModule>

在 Windows 上的 Xampp 上它工作正常,但在 Ubuntu 服务器上它似乎不再工作了。 phpinfo() 表示模型 mod_rewrite 已加载。

感谢您的帮助!

编辑:
apache的AccessLog和ErrorLog并没有说什么有用的东西。

【问题讨论】:

  • 您可能会在 serverfault.com 上得到更好/更快/更糟的答案
  • 如果我在这里没有得到正确的答案,我会在那里尝试。感谢您的提示!
  • 你确定在A-z??此外,第一条规则可能会捕获大部分请求。启用 mod_rewrite 日志记录并检查一切如何工作
  • 如果问题中描述的文件不存在,我想重定向对 index.php 的每次访问。问题是如果我调用10.0.0.xx/anything 它应该重定向到index.php,但它显示文件/var/www/html/anything 未找到的错误。在 windows/xampp 上它工作得很好(我没有改变任何东西,只是从 git 中拉出来)
  • mod_rewrite 可能已加载,但不一定打开。你需要一堆 AllowOverrideRewriteEngine On 类型的指令才能真正发生。

标签: php apache .htaccess ubuntu mod-rewrite


【解决方案1】:

AllowOverride 在 apache2.conf 中设置为 none。感谢@MarcB 的提示!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多