【问题标题】:Dynamic URL rewriting in htaccesshtaccess 中的动态 URL 重写
【发布时间】:2017-05-08 14:43:04
【问题描述】:

我有一个类似的网址:

http://localhost/project/gallery_detail.php?id=3

我想要的是:

http://localhost/project/USERNAME/3

我正在尝试的是:

RewriteEngine 
OnRewriteRule /(.*)/(.*)/$ gallery_detail.php?id=$1

并将其处理到 php 文件但没有成功。

【问题讨论】:

  • 尝试从规则模式中删除前导斜杠 /
  • @starkeen 也在尾随
  • 这个.htaccess 文件在哪里?

标签: apache .htaccess mod-rewrite url-rewriting


【解决方案1】:
RewriteRule /(.*)/(.*)/$ gallery_detail.php?id=$1

在每个目录的.htaccess 文件中,URL 路径从不以斜杠开头。当您需要 3 个并且在 substitution 中使用第一个(即project)时,您也只捕获了 2 个组。

如果您的.htaccess 文件位于文档根目录(即localhost/.htaccess),请尝试以下类似操作。

RewriteRule ([^/]+)/[^/]+/(\d+)$ $1/gallery_detail.php?id=$2 [L]

如果您不需要组,则无需捕获组。 [^/]+ 代表 1 个或多个字符,斜线(目录分隔符)除外。

更新:但是,如果 .htaccess 文件位于 /project 子目录中,则将其更改为:

RewriteRule [^/]+/(\d+)$ gallery_detail.php?id=$1 [L] 

【讨论】:

  • 对,现在我在这里要做的是我已经生成了我的网址,例如:localhost/project/USERNAME/3 现在我想将其重定向到 gallery_detail.php 我该怎么做任何建议
  • 是的,我刚刚更新了我的答案。但是,这假设您的 .htaccess 文件位于文档根目录中,即。 localhost/.htaccess.
  • 位于项目根目录下,例如本地主机/项目/.htaccess
  • RewriteRule ([^/]+)/[^/]+/(\d+)$ /$1/gallery_detail.php?id=$2 [L] 这不起作用它正在重定向到本地主机/xampp
  • .htaccess 位于/project/.htaccess 时,我刚刚更新了我的答案。这不应该触发外部重定向。你的.htaccess 文件中有其他指令吗?
猜你喜欢
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 2015-02-17
  • 2014-02-02
相关资源
最近更新 更多