【问题标题】:How to get the previous url in rewrite engine?如何在重写引擎中获取以前的 url?
【发布时间】:2023-03-15 21:19:01
【问题描述】:
RewriteEngine On
RewriteRule ^(register)/?$
RewriteRule ^([\w-]+)/?$ profile.php?username=$1

在第二行,我不想拦截或重定向用户。如果 url 与给定的正则表达式模式匹配,我不想执行任何操作,并且用户请求的 url 应该去它打算去的地方。我该怎么做?

【问题讨论】:

  • 我不想执行任何操作你想显示404?
  • 没有。如果 url 与给定的模式匹配,则不应将用户带到除用户先前请求的 url 之外的其他地方。如果用户请求 /register/ 那么它应该把用户带到 /register/
  • 那么register 有什么?一个register.php 执行和显示?
  • 注册带用户注册/index.php
  • 您的.htaccess 中还有什么其他内容?

标签: php mod-rewrite


【解决方案1】:

由于您希望将除register 之外的所有请求重定向到profile.php,因此您可以添加一个额外的重写条件以仅在请求URI 不是register 时才重定向。

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/register/?$ [NC]
RewriteRule ^([\w-]+)/?$ profile.php?username=$1

演示: https://htaccess.madewithlove.be?share=5f7d67b4-a374-5195-975e-a9742a685fdf

【讨论】:

  • 能否解释一下第二行?
  • @KMABadshah 检查request_uri 是否不是/register。如果是,则执行重写规则,否则请求按原样工作。
  • @KMABadshah 正则表达式模式的 NOT 以 ! 开头。
  • @KMABadshah 但请确保没有人将username 用作register
  • @KMABadshah 老实说,官方文档只是我找到的好来源。 httpd.apache.org/docs/2.4/howto/htaccess.html您可以使用此测试工具来检查您的 .htaccess 准确性。 htaccess.madewithlove.be
猜你喜欢
  • 2011-04-23
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 2020-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多