我正在开发一个私人项目,这个项目基本上是个人资料系统。 现在我一直在尝试如何改进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/foo或http://example.com/profile/foo
- > http://example.com/foo/jobs或http://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
答案 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]