【发布时间】: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 可能已加载,但不一定打开。你需要一堆
AllowOverride和RewriteEngine On类型的指令才能真正发生。
标签: php apache .htaccess ubuntu mod-rewrite