Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess htaccessurl';重定向和重写_.htaccess_Redirect_Url Rewriting - Fatal编程技术网

.htaccess htaccessurl';重定向和重写

.htaccess htaccessurl';重定向和重写,.htaccess,redirect,url-rewriting,.htaccess,Redirect,Url Rewriting,希望有人能帮我,因为我完全不擅长调整 我正在开发一个基于php的网站。在这个网站上,我根据查询字符串包含特定的页面 例如:index.php?q=somePage. 在.htaccess中,我查找例如:/somepage/,并告诉服务器加载q=somepage。完成此操作后,服务器将从url中删除所有其他查询字符串,因此不会传递它们 现在来看这个问题,是否有办法设置.htaccess以捕获[q]参数并传递所有其他查询字符串(服务器端) 例如:如果我调用/somepage¶meter=so

希望有人能帮我,因为我完全不擅长调整

我正在开发一个基于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变成专家,如果你能为我指出正确的方向,那将是史诗般的。regEx也是如此;)

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

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]
如果URL没有标识文件或e目录,请将其传递到index.php

编辑 您可以查看regexp的介绍,但是建议htaccess将所有参数传递给索引PHP

使用phpinfo();查看PHP如何看待您的请求

根据您的要求,在这里输入index.php

<?php
phpinfo();

请适当地包装代码。它将帮助那些试图帮助你的人。在我发布后,我刚刚通知了它:)注意到了,但是包装所有代码,不仅仅是你的
.htaccess
文件。那里没有任何其他代码,但我将URL/查询字符串示例格式化为粗体,以帮助快速扫描文本:)帮助,但尝试用重音符号包装它们。(`)我知道我是一个n00b在所有这些url重写的东西。。但是你完全失去了我:)简单,在示例中设置.htacces,放置一个只有phpinfo()的index.php,执行一些查询(param1=val1¶m2&…)并查看结果。在phpinfo()页面中有很多东西,但是在所有页面中查找param1可以找到PHP和apache如何看到您的请求He我不怀疑您是一个完整的htaccess忍者,但我想了解发生了什么。因此,如果我能说服您就上述代码的作用给我写一行或两行,那将是史诗般的:)
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