htaccess URL 重写问题(特定于 CPanel 类型托管)

htaccess URL 重写问题(特定于 CPanel 类型托管)

我在 Apache 2.2 CentOS(带 cPanel)上设置了一个应用程序。我遇到了 htaccess 问题。我已确认 mod_rewrite 可以正常工作。我的 .htaccess 文件布局如下:

RewriteEngine on

# if a directory or a file exists, use it directly
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
 RewriteRule . index.php 

我的 webapp 文件夹基本上有一个文件 index.php ,所有 URL 请求都需要通过此文件进行引导。

我尝试了以下操作,但看来我的 .htaccess 或 httpconf 有问题:

  1. 从 htaccess 中删除所有内容仍然可以访问 index.php 文件(可能是查找 index.php 的默认行为)
  2. 我更改了索引文件的名称,以便应用程序根目录中没有名为 index 的文件 - 它引发了 403 。
  3. 如果我注释掉RewriteCond %{REQUEST_FILENAME} !-d它就会抛出 404
  4. Deny from all按照预期抛出 403
  5. 使用此配置,所有其他目录(例如包含 CSS/图像等的目录)如果没有单独的 htaccess,当我尝试访问它们时都会抛出 403

可能存在的问题

  1. htaccess 文件
  2. httpd conf 中的虚拟主机/目录配置
  3. Apache 文件夹的用户权限问题(不太可能)

有什么方法可以找出问题所在以及如何纠正它?

编辑

我查看了服务器的错误日志,发现了以下内容:

[Thu Jan 17 07:44:45 2013] [error] [client 182.68.43.96] File does not exist: /usr/local/apache/htdocs/home

[Thu Jan 17 07:44:45 2013][error] [client 182.68.43.96] File does not exist: /usr/local/apache/htdocs/home, referer: http://IP_ADDRESS_HERE/~myapp/myapp/user

当文件位于备用目录中时,它会在 apache htdocs 中查找文件。即便如此,它也不应该在 myapp 下查找名为“user”的目录,而应该根据 htaccess 文件重定向到 index.php。我重新编写了基础,现在它在 myapp 目录下查找,但它仍然没有像每次请求时那样执行 index.php。

答案1

终于能够解决这个问题。如果您在 VPS 上托管,同时托管 cpanel 或类似的东西,而您的文件不在 apache 的 htdocs 文件夹中,则问题非常具体。

.htaccess 的最后一行应为:

RewriteRule . /~cpanel_account_name/app_folder/index.php 

这很有帮助:http://htaccess.madewithlove.be/

相关内容