【发布时间】:2010-11-10 20:18:18
【问题描述】:
我一直在努力设置重写规则,这样我就可以拥有更短更好的 URL,并且我有一个非常 ajaxy 的网站。
我已经在服务器上运行了重写规则,并且页面加载了漂亮的新 url,但似乎所有 ajax 现在都被破坏了。 Firefox 告诉我这是一个 500 错误。
尝试直接加载页面,我没有收到“500 错误”页面,但它确实返回了“3738”,尽管我不知道这意味着什么。
所以我检查了apache日志,果然
GET /processes/format.php?output=queries HTTP/1.1" 500 33问题是,我不知道为什么会损坏。该页面存在,所以我猜这是重写网址的问题?
我的重写规则是这样的
重写引擎开启 RewriteCond %{REQUEST_URI} !\.(php|html|css|js|gif|png|jpe?g)$ 重写规则 (.*)$ /index.php [L]-----------------已编辑 1----------------- 所以我得到了错误日志,看起来错误是在重写器中无法识别
使用请求的 uri /processes/format.php 初始化重写引擎 将模式 '(.*)$' 应用于 uri '/processes/format.php' RewriteCond: input='/processes/format.php' pattern='!.(php|html|css|js|gif|png|jpe?g)$' => 不匹配通过/processes/format.php所以我认为这是重写规则的错误,因为 !.php 应该已经匹配,除非我读错了日志。
----------------编辑 2 ------------------ 看起来这可能是一个 2 部分错误。 第 1 部分 javascript 正在加载 500 错误 第 2 部分页面没有输出内容。 我在页面中添加了一些回声,并且 URL 是可检索的。不知道 3738 是从哪里来的。
【问题讨论】:
-
既然日志说“不匹配=>通过”,说明重写规则不会被应用,因此很可能不是重写导致错误。
标签: apache mod-rewrite