【问题标题】:Rewriting ID to slash in .htaccess将 ID 重写为 .htaccess 中的斜线
【发布时间】:2019-09-16 10:24:03
【问题描述】:

有人可以帮我将 url id 从 www.website.com/script/?id=3 重写为 www.website.com/script/3/

表示要去掉id=?id。

这是我的 .htaccess 文件代码:

RewriteEngine on
RewriteRule ^script/([^/\.]+)/?$ script.php?id=$1 [L]

【问题讨论】:

  • 规则似乎没问题。确切的问题是什么?你有你的AllowOverride 设置,所以Apache 会读取.htaccess 文件吗? PS。它将www.website.com/script/3/ 重写为www.website.com/script/?id=3,而不是将www.website.com/script/?id=3 重写为www.website.com/script/3/
  • AllowOVERride 已设置。 .htaccess 文件正在工作。我最近尝试从 URL 中删除 .php,它成功了。

标签: php .htaccess url hyperlink


【解决方案1】:
RewriteEngine on    
RewriteRule ^script/(.*)$    script.php?id=$1 [L]

【讨论】:

  • 这将触发来自www.website.com/script/3/ 的最后一个/ 请求
  • 不工作。我得到:在此服务器上找不到请求的 URL /script/321022ae47.php。当我输入时页面工作:script?id=321022ae47
  • 好的@the_boy_za 从我的回答中删除[L],你很高兴/script/321022ae47/script/321022ae47/ 都可以工作
  • 还是不行。我仍然收到 URL 不正确的消息。页面script/?id=321022ae47 仍然在线。
  • @the_boy_za 我已经测试了我给你的答案,而且效果很好。 yoursite.com/script/yoursite.com/script/321022ae47 我没有看到任何问题。找出您的服务器出了什么问题,或者某些东西干扰了该命令。或者您的项目中可能有一个活动的script 文件夹。您不能有任何名为 script 的文件夹
【解决方案2】:

您需要重新排序规则,将特定的 Rewrite 放在顶部。将您的 htaccess 内容替换为以下内容:

RewriteEngine on
#rewrite /script/foobar to /script.php?id=foobar
RewriteRule ^script/([^/\.]+)/?$ script.php?id=$1 [L]
#remove .php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)/?$ /$1.php [L]

【讨论】:

  • 我重新排序了规则。 .php 已隐藏,但 URL /script/321022ae47 不可访问。 /script?id=321022ae47 还在工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-09
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 2012-11-10
相关资源
最近更新 更多