htaccess url'redirects和rewrites

时间:2012-06-16 07:33:57

标签: .htaccess redirect url-rewriting

希望有人可以帮助我,因为我完全吮吸.htaccess调整。

我正在开发一个基于php的网站。在此网站上,我根据查询字符串

包含特定页面

例如: index.php?q = somePage。

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

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

例如:如果我拨打 / somepage& parameter = someparameter / somepage /& parameter = someparameter ,服务器会将网址重写为 / somepage / 但是像这样调用页面(serverside):

的index.php Q = SomePage的&安培;参数= 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带到专家那里,如果你能指出我正确的方向,那将是史诗般的。 regEx实际上也是如此;)

1 个答案:

答案 0 :(得分:0)

通常很多框架移动解析请求的逻辑 里面 PHP

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

如果URL未标识文件或e dir,请将其传递给index.php

EDIT 您可以看到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