Mod Rewrite on get vars

时间:2013-05-05 17:28:54

标签: apache .htaccess url mod-rewrite url-rewriting

我正在开发一个私人项目,这个项目基本上是个人资料系统。 现在我一直在尝试如何改进URL格式。

此时,我使用的URL看起来像是:

- > http://example.com/overview
- > http://example.com/profile/?name=foo
- > http://example.com/jobs/?name=foo

概述和个人资料都是我网站上的目录,其中包含一个index.php文件,该文件保存应从数据库中检索的PageID。

现在,我的目标是将URL格式化为:

- > http://example.com/foohttp://example.com/profile/foo
- > http://example.com/foo/jobshttp://example.com/profile/foo/jobs

无论如何使用MOD_REWRITE进行此操作?

这意味着原始网址看起来像http://example.com/?character=foo/jobs http://example.com/get_var/directory

我已经完成了对Stackoverflow和Google的研究,搜索了“ mod_rewrite get variables ”。但似乎没有什么是我想要发生的事情。

您诚挚的,
Larssy1

1 个答案:

答案 0 :(得分:1)

要在斜杠之间提取部分URI并将其作为网址参数附加,请使用表达式([^/]+)捕获所有字符,但不包括下一个/$1

RewriteEngine On
RewriteRule ^profile/([^/]+)/([^/]+/?)?$ profile/$2?character=$1 [L]

上述规则将动态捕获示例中Foo后面的内容,这意味着无论是/jobs还是/other还是/somethingelse,它都会附加为/profile/somethingelse?character=Foo。如果没有必要,/jobs是静态的,则无需将其捕获到$2中:

RewriteEngine On
# Don't dynamically capture what comes after the first variable group...
RewriteRule ^profile/([^/]+)/jobs$ profile/jobs?character=$1 [L]