【问题标题】:How do I mod_rewrite my URL to show only subfolders in URL?如何修改我的 URL 以仅显示 URL 中的子文件夹?
【发布时间】:2015-06-18 00:15:56
【问题描述】:

我有以下网址:

www.domain.com/subfolder/item.php?test=1
www.domain.com/subfolder/item2.php

我想重写 URL 以仅显示子文件夹:

www.domain.com/subfolder/

这是我目前所拥有的(在文档根目录中?):

RewriteRule ^(.*)/([^.]+)/$ /$1/$2.php?rw=1 [QSA,L]
RewriteCond %{QUERY_STRING} !^rw=1
RewriteRule ^(.*)/([^.]+)\.php$ /$1/$2/ [R=301,L]

结果:

www.domain.com/subfolder/item/
www.domain.com/subfolder/item2/

是否有一个“通用规则”产生一个只显示子文件夹的 URL,无论是否有 GET 参数。我有很多页面,不想处理所有现有案例。提前致谢!

【问题讨论】:

  • 您在浏览器中输入的示例 1 的 url 是什么?您的模式匹配这种格式的 url=>example.com/foo/bar/
  • 你是绝对正确的。我没有意识到示例 1 也适用于此规则。您是否知道如何在我/您的示例中隐藏子文件夹,以便 URL 显示 example.com/foo/ 而不是 example.com/foo/bar/。
  • RewriteRule ^(.*)$ /subfolder/item.php?test=$1 [L] 这将映射 example.com/20 example.com/subfolder/ item.php?test=20
  • 我不明白你为什么使用QUERY_STRING..你想用这个实现什么?

标签: regex apache mod-rewrite webserver


【解决方案1】:

你可以使用

RewriteRule ^subfolder.*$ /subfolder/?  [R=301,L]

输入:

http://www.domain.com/subfolder/item.php?test=1

结果网址:

http://www.domain.com/subfolder/

该规则会将所有带有http://www.domain.com/subfolder/* 的URL 重写为http://www.domain.com/subfolder/,而/subfolder/? 末尾的? 将省略查询字符串。

至于选项,你可以选择最适合你的。

【讨论】:

  • 谢谢@stribizhev。我想我误解了 RewriteRule。我只想更改 URL 名称,而不是重定向到此目录。你能再帮我一次吗?
猜你喜欢
  • 1970-01-01
  • 2012-03-09
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 2014-12-06
  • 1970-01-01
  • 2018-01-16
相关资源
最近更新 更多