【发布时间】:2012-04-20 23:29:41
【问题描述】:
让我们从一个例子开始:
所以请求的 URL 将是:www.domain.com/product/hdd/samsung
我想要一个重写规则来获取 index.php 并将 www.domain.com 之后的所有内容保存到 php 变量中。因此,替代页面将是例如 www.domain.com/index.php?query=product/hdd/samsung。但我无法编写正确的规则。
我试过这个:
RewriteRule ^/(.*)$ index.php?query=$1 [NC,L]
上面的代码不起作用。我想在 index.php 中使用 PHP 代码中的查询:
if(isset($_GET["query"] )) {
$query=$_GET["query"];
}
我发现,有可能通过$_SERVER['QUERY_STRING'] 而不是mod_rewrite 获得$query,对吗?
对于我的 PHP 应用程序来说,变量 $query 很关键,因为它用于加载模板。
问题:
你会推荐我什么解决方案?要使用$_SERVER 变量还是mod_rewrite?
如果mod_rewrite,如何写正确的RewriteRule?
谢谢
【问题讨论】:
-
这条规则对我来说很好。您能否测试一些更简单的规则来验证重写规则模块是否已应用并正常运行?
-
确保您在某处拥有
RewriteEngine on。 -
重写引擎工作正常(开启)。如果我使用上面的规则,我会得到 404 错误。我正在本地主机(wamp 服务器)上对其进行测试。
-
我能写的最好的规则是:RewriteRule /(.*) index.php?query=$1 [NC,L],但我只在第二个斜杠之后得到字符串(如果有是第二个斜线,否则我会收到 404 错误)。
标签: php regex .htaccess mod-rewrite