Che*_*ryl 2 php apache mod-rewrite get
关于这个同样的话题还有其他几个问题,我已经阅读了,但我的略有不同.我正在尝试做一个非常基本的mod_rewrite:
RewriteEngine on
RewriteRule ^go/([^/\.]+)/?$ /go.php?page=$1
Run Code Online (Sandbox Code Playgroud)
go.php 看起来像这样:
<?php
ini_set('display_errors',1);
if(isset($_GET['page'])){
echo 'page='.$_GET['page'];
}else{
echo 'oh shnizzle!';
}
?>
Run Code Online (Sandbox Code Playgroud)
现在,当我进入/go/someword浏览器时,$_GETparam"someword"不会传递,我收到消息"哦shnizzle!" 每次.有什么可能的原因我无法$_GET通过mod_rewrite 传递任何参数?
Tim*_*one 13
你可能已经MultiViews打开了.将其添加到您的.htaccess文件顶部:
Options -MultiViews
Run Code Online (Sandbox Code Playgroud)
希望问题应该消失.
为了详细说明在这种情况下发生了什么,您的URL /go/someword指向一个不存在的资源,因此MultiViews将其转换为存在的资源/go.php.发生这种情况时,该/somewhere位将传递给PHP $_SERVER['PATH_INFO'],但go.php与您的重写规则不匹配,因此不会执行重写来编写该查询字符串.
您需要在重写规则上使用QSA(查询字符串追加)标记.
RewriteEngine on
RewriteRule ^go/([^/\.]+)/?$ /go.php?page=$1 [QSA]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4858 次 |
| 最近记录: |