给定示例URL:https://example.com/{SOME-ID}/foo/bar
如何实现URL重写,以便:
{SOME-ID}
的值不是服务器上的真实的目录,否则会引发404错误
1.服务器将{SOME-ID}
替换为目录guest-area
(该目录 * 确实 * 存在于服务器上){SOME-ID}
的值被视为GET参数
现在,服务器将URL视为:https://example.com/guest-area/foo/bar/?q={SOME-ID}
重写条件需要考虑guest-area
之后任意数量的子目录(或之后没有子目录)。
只有第一个目录(即{SOME-ID}
)应该替换为guest-area
。它后面的所有其他目录都应该作为URL的一部分保留,并假定为真实的目录。
重写也应该只在{SOME-ID}
不是真实的目录的情况下发生。
对于context,guest-area
中的所有文件(以及它的任何子目录)都将包含一个$_GET['q']
值的处理程序,如果{SOME-ID}
不是一个可识别的值,它将加载页面或抛出404。
1条答案
按热度按时间y4ekin9u1#
重写引擎打开
重写Base/
重写条件%{REQUEST_FILENAME}!-d
重写条件%{REQUEST_FILENAME}!-f
重写规则^([^/]+)/(.*)$ /$2?q=$1 [L,QSA]
用途=
这些规则允许您将包含{SOME-ID}的URL重写为访客区域/?q={SOME-ID}。{SOME-ID}的值将被视为GET参数。