【问题标题】:htaccess url rewrite with question markhtaccess url用问号重写
【发布时间】:2012-02-13 02:06:04
【问题描述】:

我在.htaccess 中遇到问题,特别是在重定向方面。

我想重写这个网址:

http://www.domain.com/?mod=country

http://www.domain.com/country

我已经尝试过这个.htaccess 代码:

RewriteEngine on
RewriteRule ^\?mod=(.*)$ $1

我尝试在没有问号字符的情况下对其进行处理,并且效果很好。 我已经避开了问号,因为它是特殊字符的一部分,但我仍然无法让它工作。

你能说出我错过了什么吗?

【问题讨论】:

  • 你想让/country转到/?mod=country吗?
  • RewriteRule's 不用于重定向用户。
  • 你的意思不是反过来吗?当访问者键入 www.foo.com/country 时,它应该在内部被视为 ?mod=country?
  • @BookOfZeus /?mod=country to /country
  • @jaysonatic 检查 qtax 答案,而不是 [QSA] 使用 [R=301,L]

标签: regex .htaccess mod-rewrite


【解决方案1】:

直接翻译你的需求来重写规则:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^mod=(.*)$
RewriteRule ^$ %1

但您可能想要更灵活的东西,例如:

RewriteEngine On
RewriteCond %{QUERY_STRING} (?:^|&)mod=([^&]+)
RewriteRule /?(.*) %1/$1 [QSA]

这些规则适用于您的域的根目录。

如果您想进行外部重定向,请将 R 标志添加到重写规则中。

【讨论】:

  • 第一个代码输出:domain.com/country_data?mod=country_data,我希望它只是 /country_data。谢谢。
  • 如何删除尾随的 ?mod=country_data?
  • @jaysonatic 要删除查询字符串,请添加 ?,即将规则更改为 RewriteRule ^$ %1?
  • @UlrichPalha 的输出是一样的,我用htaccess.madewithlove.be 来检查htaccess 代码。
  • @jay, RewriteRule ^$ %1? [R=301]
猜你喜欢
  • 2013-09-03
  • 2021-08-21
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 2013-12-24
  • 1970-01-01
相关资源
最近更新 更多