URL重写:内部服务器错误

我有一个关于Apache的重写规则的小问题

这是我的规则

Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule query/(.*) /PHP/query.PHP?name=$1 [L] RewriteRule page/(.*) /PHP/page.PHP?page=$1 [L]

它完美的作品。 但是,当我尝试添加以下规则来重写不符合前两个规则的URL时

RewriteRule .* /PHP/page.PHP?page=home

服务器响应“内部服务器错误”。 为什么?

为什么dir_module似乎没有加载,虽然显然是加载在httpd.conf和模块文件夹?

通过multipartentity发送Unicode字符

在Apache和Wsgi上部署Django

启用Log4J2 + Apache HttpClient的debugging日志logging

Windows环境variablesvsconfiguration文件

.htaccess中的基本URL

使用Apache Camel UnZippedMessageProcessor解压缩文件

更改documentroot之后,xampp仍然使用认的PHPmyadmin

如何在Ubuntu上安装Phusion Passenger 4(在apache2或Nginx上)?

禁用Apache日志access.log

你可以使用RewriteLog来查看发生了什么事情,但是即使使用了[L]你也可以确定一个重写的URL总是在规则集上重新检查(这是调用内部重定向)。

所以在最终的catch-all之前添加一些RewriteCond ,或者防止它在内部重定向上运行,这样:

RewriteCond %{ENV:REDIRECT_STATUS} ^$

你也可以在最后的catch-all上添加[NS]或者[nosubreq]标签,这也是一样的。

但是防止你对内部重定向的规则也意味着在任何以前的规则之后它永远不会被应用,有一天你可能会需要它。 所以要小心下一个规则。

谢谢 !

最后,这是我的解决方案:

Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule query/(.*) /PHP/query.PHP?name=$1 [L] RewriteRule page/(.*) /PHP/page.PHP?page=$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ page/home [L,R] RewriteRule ^$ page/home [NS,R]

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....