0

希望有人可以帮助我,因为我完全不喜欢 .htaccess 调整。

我正在开发一个基于 php 的网站。在这个网站上,我包含基于查询字符串的特定页面

例如:index.php?q=somePage。

在 .htaccess 我寻找例如:/somepage/并告诉服务器加载q=somePage。完成此操作后,服务器会从 url 中删除所有其他查询字符串,因此它不会传递它们。

现在的问题是,有没有办法设置 .htaccess 来捕获[q]参数并传递所有其他查询字符串(服务器端)?

例如:如果我调用/somepage¶meter=someparameter/somepage/¶meter=someparameter服务器会将 url 重写为/somepage/但调用页面(服务器端),如下所示:

index.php?q=somePage¶meter=someparameter

这是我的 htaccess 现在的样子:

Options +SymLinksIfOwnerMatch
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?q=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?q=$1

如果不是,我想我只需将参数存储在会话中并以这种方式传递它们。但我希望有人可以提供帮助:)

PS:如果您知道一本书涉及 htaccess 并且可以将我从完整的 n00b 带到专家,如果您能指出我正确的方向,那将是史诗般的。正则表达式实际上也是如此;)

4

1 回答 1

0

通常很多框架将解析请求 的逻辑移到PHP内部

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]

如果 URL 不能识别文件或 e 目录,则将其传递给 index.php

编辑您可以查看http://www.zytrax.com/tech/web/regex.htm以了解 regexp 的介绍,但建议 htaccess 将所有参数传递给索引 PHP。

使用phpinfo(); 看看你的请求是如何被 PHP 看到的

根据您的要求,index.php

<?php
phpinfo();

这里有一些你可以尝试的查询(我想你的代码在 localhost 的根目录上):

http://localhost/
http://localhost/test
http://localhost/a/b
http://localhost/?p1=v1&p2&v2&p3&p4
http://localhost/a/b?p1=v1&p2&v2&p3&p4
http://localhost/a/b/?p1=v1&p2&v2&p3&p4
于 2012-06-16T07:38:33.037 回答