我正在设计我的应用程序。我应该做下一件事。所有GET参数(?var = value)在mod_rewrite的帮助下应该转换为/ var/value。我怎样才能做到这一点?我只有1个.php文件(index.php),因为我正在使用FrontController模式。你能帮我用这个mod_rewrite规则吗?
对不起,我的英语。先谢谢你。PHP的所有GET参数与mod_rewrite
回答
我在使用'seo-friendly'网址的网站上做这样的事情。
在.htaccess:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]
然后在index.php文件:
if ($_SERVER['REQUEST_URI']=="/home") {
include ("home.php");
}
的的.htaccess规则告诉它加载的index.php,如果要求的文件或目录未找到。然后你只需解析请求URI来决定index.php应该做什么。
美丽。这正是我需要的。 – Qix 2013-05-01 16:09:27
AFAIK mod_rewrite在问号后不处理参数 - 重写规则的regexp行结束符与'?'之前的路径末尾相匹配。所以,你几乎不能传递参数,或者在重写时完全放弃参数。
的.htaccess
RewriteEngine On
# generic: ?var=value
# you can retrieve /something by looking at $_GET['something']
RewriteRule ^(.+)$ /?var=$1
# but depending on your current links, you might
# need to map everything out. Examples:
# /users/1
# to: ?p=users&userId=1
RewriteRule ^users/([0-9]+)$ /?p=users&userId=$1
# /articles/123/asc
# to: ?p=articles&show=123&sort=asc
RewriteRule ^articles/([0-9]+)/(asc|desc)$ /?p=articles&show=$1&sort=$2
# you can add /? at the end to make a trailing slash work as well:
# /something or /something/
# to: ?var=something
RewriteRule ^(.+)/?$ /?var=$1
第一部分是接收到的URL。第二部分重写的URL,您可以使用$_GET
读出。 (
和)
之间的所有内容都被视为一个变量。第一个将是$1
,第二个是$2
。这样,您就可以确定变量在重写的URL中的确切位置,从而知道如何检索它们。
通过使用(.+)
,您可以保持一般性并允许“一切”。这仅仅意味着:任何字符的一个或多个(+
)(.
)。或者更具体而且例如仅允许数字:[0-9]+
(0到9范围内的一个或多个字符)。你可以在http://www.regular-expressions.info/找到更多有关正则表达式的信息。这是一个很好的网站来测试它们:http://gskinner.com/RegExr/。
您的.htaccess中的以下代码将重写您的URL从例如。 /api?other=parameters&added=true
至/?api=true&other=parameters&added=true
RewriteRule ^api/ /index.php?api=true&%{QUERY_STRING} [L]
这就是我正在寻找的!谢谢! – Aaron 2013-04-13 21:13:37
- 1. PHP - mod_rewrite的与参数
- 2. 的mod_rewrite和GET参数
- 3. 重写PHP所有GET参数的.htaccess
- 4. PHP获得与GET参数
- 5. Php GET参数与表格
- 6. mod_rewrite的,干净的URL和GET参数
- 7. 的mod_rewrite上可选的GET参数
- 8. mod_rewrite的隐藏URL GET参数
- 9. 所有url上的PHP mod_rewrite
- 10. 的HTTP GET与参数,PHP函数
- 11. 问题与mod_rewrite的和GET
- 12. 在mod_rewrite中传递GET参数
- 13. 变化GET参数和使用mod_rewrite
- 14. GrizzlyHttpServerFactory.createHttpServer @GET与参数
- 15. 的Apache的mod_rewrite和PHP GET阵列
- 16. Apache的mod_rewrite和PHP?参数=东西
- 17. mod_rewrite的htaccess的与逃脱参数
- 18. 的mod_rewrite规则与get方法
- 19. 我还可以使用PHP变量GET与mod_rewrite的
- 20. PHP多语言GET参数
- 21. Slim PHP和GET参数
- 22. .htaccess RewriteRule php-get参数
- 23. mod_rewrite只在GET
- 24. 语言参数改写与mod_rewrite的
- 25. Mod_rewrite将所有内容转发到index.php的参数
- 26. 没有GET的URL参数
- 27. CakePHP2与GET参数分页
- 28. REST GET动词与参数
- 29. 与参数GET操作
- 30. Rails:link_to与块和GET参数?
这听起来对您和您的用户都很可怕。通常,使路径看起来像指定内容是个不错的主意,但只保留其他参数。例如,您可能不是/content.php?id=5,而是/ content/5。如果你有一些选择的东西,但你可能想要做一些像/ content/5?opt1 = something&opt2 = something。 – Brad 2011-01-12 21:06:28