【问题标题】:Removing string from URL using .htaccess使用 .htaccess 从 URL 中删除字符串
【发布时间】:2011-05-13 20:53:32
【问题描述】:

我有example.com/pages/page1/example.com/pages/page2 形式的网址

.htaccess 中是否有一种简单的方法可以摆脱/pages/ 部分,所以我的网址是:

example.com/page1

谢谢

【问题讨论】:

  • 等待 - 请澄清一下,以便我了解您的目标:您希望您的最终用户输入 example.com/pages/page1 并在内部重定向到 example.com/page1 还是您希望您的最终用户输入 example.com/page1它在内部静默重定向到example.com/pages/page1?
  • 我希望输入example.com/pages/page1 的用户被重定向到example.com/page1
  • 查看我的答案的编辑。希望这对你有用。

标签: .htaccess


【解决方案1】:

如果您有能力修改DocumentRoot,听起来您只需将DocumentRoot 设置为/path/to/pages。但是,如果您不能这样做,那么您可以在 .htaccess 中尝试此操作

RewriteEngine On
RewriteRule ^/(.*)$ /pages/$1 [L,QSA]

以上是通用的,并将所有内容重定向到/pages。如果您的页面确实被称为“page1 page2 etc”,那么这更具体:

RewriteRule ^/page([0-9]+)$ /pages/page$1 [L,QSA]

如果您有更多重写规则要处理,请删除[L][QSA] 转发可能存在的任何其他查询字符串参数。

EDIT:让用户输入example.com/pages/page1被重定向到example.com/page1

RewriteEngine On
RewriteRule ^/pages/(.*)$ /$1 [L,QSA]

以上内容将在内部重定向,但不会更改浏览器的地址栏。如果您希望更改地址栏,通知用户重定向已发生,请改用[L,R=301,QSA]

【讨论】:

  • 我的页面名称是动态的,因此类似于/pages/about-us/pages/contact。我还有其他页面,例如/categories/users,所以我宁愿不重定向所有内容,只重定向那些匹配/pages/dynamic_url
猜你喜欢
  • 2014-09-30
  • 1970-01-01
  • 2021-08-18
  • 2013-04-16
  • 1970-01-01
  • 2012-11-28
  • 2017-06-01
  • 2016-10-25
相关资源
最近更新 更多