【问题标题】:.htaccess RewriteRule returns a blank page.htaccess RewriteRule 返回一个空白页
【发布时间】:2012-11-05 02:08:30
【问题描述】:

我正在尝试解决这个问题超过两个小时。 我有一个使用 .htaccess 来管理网址的个人网站。 它看起来像这样:

RewriteEngine on
RewriteBase /
...
RewriteRule ^sklad/?$ index.php?action=sklad
RewriteRule ^sklad/user/([0-9]+)?$ index.php?action=sklad&user=$1
RewriteRule ^sklad/folder/(.+)?$ index.php?action=sklad&folder=$1
RewriteRule ^sklad/file/(.+)?$ engine/ajax/sklad.php?file=$1
RewriteRule ^sklad/logout/?$ index.php?action=sklad&op=logout
...
RewriteRule ^admin/?$ admin.php
RewriteRule ^admin/news/?$ admin.php?action=news

前五个工作正常。 admin/ 工作正常。但是当我尝试访问 admin/news/ 时,我得到一个空白页面。 Apache 没有显示或记录错误,也没有输出。 admin.php?action=news 工作正常。

sklad/admin/ 文件夹都实际存在于服务器上。 但是当我将 admin/ 文件夹重命名为其他名称时 OR 将最后一个 RewriteRule 更改为类似

RewriteRule ^admin123/news/?$ admin.php?action=news

我可以访问 admin123/news/。如果它与服务器上存在的实际文件夹有关,那么为什么前五个规则有效?这没有意义。

我没有想法,希望这里有人帮助......

【问题讨论】:

  • /admin/文件夹中是否有以news开头的文件?
  • 是的,它叫做news.php...我重命名了文件,现在exerything很好,谢谢!不知道这个,非常不明显的错误(或不是?)

标签: .htaccess mod-rewrite


【解决方案1】:

是的,它叫做 news.php...我重命名了文件,现在 exerything 很好,谢谢!不知道这个,非常不明显的错误(或不是?)

这不是错误,听起来内容协商(通过 mod_negotiation)已打开,并且正在执行您不想要的操作。可以通过类型映射或 MultiViews 选项打开协商。类型映射的设置有点明确,所以我假设由于您不知道为什么会发生这种情况,您还没有设置映射到 news.php 的特定类型。所以您可能已经打开了Multiviews。您可以通过从 Options 语句中删除它来关闭它:

#  remove this word -----------v
Options Indexes FollowSymLinks Multiviews

这可以在任何地方,在您的 htaccess、服务器配置、vhost 配置、某些配置包含文件等中。因此您也可以在您的 htaccess 文件中显式取消设置它(只要您没有在同一个文件):

Options -Multiviews

【讨论】:

  • 在我的 .htaccess 中添加了 -MultiviewsOptions,它解决了这个问题。谢谢!
【解决方案2】:

我不太擅长 htaccess 和 RegExp,但我认为 admin/news 将属于您的第一个 htaccess 规则。

   RewriteRule ^admin/?$ admin.php

它不会继续执行您关于管理员的第二条规则,即:

   RewriteRule ^admin/news/?$ admin.php?action=news

这也是我之前遇到的问题。

尝试修改您的 admin.php,在没有参数传递时回显/打印一些东西。像这样的:

   if($_GET['action'])
   {
        echo 'With Parameters';
   }
   else
   {
       echo 'No Parameters pass';
   }

这样调试的。

【讨论】:

  • 显示了很多没有定义任何 $_GET['action'] 的东西 - 元数据、标题、登录表单(如果没有活动会话)或欢迎页面和页脚......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-28
  • 2016-03-31
  • 2019-12-20
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
相关资源
最近更新 更多