【问题标题】:How to manipulate URL with .htaccess for PHP?如何使用 .htaccess 为 PHP 操作 URL?
【发布时间】:2021-08-20 04:29:39
【问题描述】:

我的目标是操纵 URL 栏,这样对用户来说会更简单。

我正在使用 htaccess 并想操作一个 URL

当前网址为:localhost/test/htdocs/invite?code=AB2A

我希望网址是:localhost/test/htdocs/invite/ABAC

我如何使用 htaccess 来完成这个?我希望用户能够输入 localhost/test/htdocs/invite/ABAC 并让它与我的代码一起使用,因为目前他们必须编写 localhost/test/htdocs/invite?code=AB2A

我目前正在使用此代码:

RewriteCond %{QUERY_STRING} (^|&)code=([^.?]+)($|&)
RewriteRule ^test/htdocs/invite\.php$ /test/htdocs/invite/([^.?]+)? [L,R=301]

但是,它显示 404 Not Found

【问题讨论】:

  • 我的网址是localhost/test/htdocs/invite?code=1 RewriteEngine on RewriteRule ^invite/([a-zA-Z0-9]+)$ /invite?code=$1 [L,QSA] 但这不起作用
  • 请确保您的 RewriteEngine 已由 Apache 启用。要检查这一点,只需在.htaccess 文件中插入一个随机字符串(现在保存文件),重新加载页面后您必须看到一个错误。如果没有错误,则意味着您的 RewriteEngine 已禁用,这就是 .htaccess 无法正常工作的原因
  • 我的重写引擎工作正常。我只是不知道这个确切的代码是否正确?因为它对 URL 没有影响。另外,在 htacces 的底部,我正在删除 .php 但这不应该影响这个?
  • 您当前的 URL 是 :invite?code=AB2A 但为什么 ABAC 在修改后的 URL 中?

标签: .htaccess web server


【解决方案1】:

我在这里使用了\w,这是一个单词字符[0-9A-Za-z]。

<IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^/invite([\w]+)/?$ invite?code=$1
      RewriteCond %{REQUEST_FILENAME}.php -f
      RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
    </IfModule>

【讨论】:

  • 我的 URL 不会更改为 /invite/1。它保持为 /invite?code=1
  • 我在我的机器上尝试了我的解决方案,它非常适合/invite/1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
  • 2013-01-29
  • 2016-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多