【问题标题】:Redirect all urls with parameters to an specific page with same parameters将所有带参数的 url 重定向到具有相同参数的特定页面
【发布时间】:2012-11-19 17:12:37
【问题描述】:

我正在尝试将所有带参数的 url 重定向到具有相同参数的不同 url。

例如:www.mysite.com/?q=about 我需要它去 www.mysite.com/index.php?q=about

我不关心参数,但我需要他们都去 index.php 加上同类型的参数。

如果我没记错的话,我应该使用 RewriteRule,但我不确定该怎么做。

我正在尝试这样的事情,但它不起作用:

重写引擎开启
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} .
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

有什么想法吗?

提前致谢

【问题讨论】:

  • 是的,这可以通过 RewriteRule 指令来完成,但是有很多方法可以做到这一点,在问题结束之前用一个例子来解释你想要什么。太笼统了。

标签: apache .htaccess


【解决方案1】:

更新:

试试这样的:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^/(.*)/?$ 
RewriteRule ^(.*)$  /index.php%1 [L]

To account for trailing slash, in index.php test the query like this:

<?php
if ( ($_GET['q'] == 'about') || ($_GET['q'] == 'about/') ){
//do stuff; 
}
?>

当然q=about 可以替换为您想要的任何内容。即search=apples

【讨论】:

  • 我收到内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。
  • 感谢费利佩的帮助。我尝试了您的解决方案,但它不起作用。但我找到了一个适合我的解决方案: RewriteEngine On RewriteBase / RewriteCond %{QUERY_STRING} q RewriteRule ^(.*) index.php [L]
  • 它对我有用,但重要的是现在你知道如何去做了。不要忘记相应地修改q,以防您明天决定在查询字符串中使用其他内容。
猜你喜欢
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
  • 2015-03-19
  • 2013-09-12
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多