.htaccess 如何表示URL重写条件以在第1个目录不存在时替换该目录的名称?

von4xj4u  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(137)

给定示例URL:
https://example.com/{SOME-ID}/foo/bar
如何实现URL重写,以便:

  1. {SOME-ID}的值不是服务器上的真实的目录,否则会引发404错误
    1.服务器将{SOME-ID}替换为目录guest-area(该目录 * 确实 * 存在于服务器上)
  2. {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。
y4ekin9u

y4ekin9u1#

重写引擎打开
重写Base/
重写条件%{REQUEST_FILENAME}!-d
重写条件%{REQUEST_FILENAME}!-f
重写规则^([^/]+)/(.*)$ /$2?q=$1 [L,QSA]
用途=
这些规则允许您将包含{SOME-ID}的URL重写为访客区域/?q={SOME-ID}。{SOME-ID}的值将被视为GET参数。

相关问题