mod_rewrite“ 400错误请求”问题

问题描述

| 设置mod_rewrite时,我似乎无法克服Bad Request错误。我已经尝试了一段时间,所以这就是我所拥有的。 我尝试访问的网址是:
gordons.local/brewCalc
我想看的页面是
gordons.local/index.php?page=brewCalc
这是我的重写规则:
    RewriteEngine on
    RewriteLog /var/www/gordons.com/logs/rewrite.log
    RewriteRule ([^/]+)/?$ index.php?page=$1 [L]
我已经使用了正则表达式工具和该工具,但是无论最后我看到的页面是什么:
Bad Request

Your browser sent a request that this server could not understand.
Additionally,a 400 Bad Request error was encountered while trying to use an ErrorDocument to handle the request.

Apache/2.2.12 (Ubuntu) Server at gordons.local Port 80
另外,我在访问,错误或重写日志中也没有任何信息。 编辑:我的重写规则在我的vhost文件中。 (/etc/apache2/sites-available/gordons.local)     

解决方法

万一有人发现自己在这里,我的问题是在更换前缺少斜杠。
RewriteRule ([^/]+)/?$ index.php?page=$1 [L]
本来应该
RewriteRule ([^/]+)/?$ /index.php?page=$1 [L]
r ...     ,如果看到Apache的error.log,则可以看到实际的错误。您极有可能尝试将上述规则放在.htaccess文件中,而.htaccess文件中不允许使用
RewriteLog
。同样,您的RewriteRule将重定向比您预期的更多。因此,如果您注释掉您的
RewriteLog
并让RewriteRule像这样,那么它应该可以工作:
RewriteEngine On
RewriteBase /

# request is not for a file
RewriteCond %{REQUEST_FILENAME} !-f
# request is not for a directory
RewriteCond %{REQUEST_FILENAME} !-d
# forward to index.php
RewriteRule ^([^/]+)/?$ index.php?page=$1 [L,QSA,NC,NE]
NC-忽略案例比较 NE-不编码RHS URI QSA-将现有查询字符串追加到新查询字符串中 L-标记为最后一条规则     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...