.htaccess 如何重定向或重写带有问号和标签的url?

.htaccess 如何重定向或重写带有问号和标签的url?,.htaccess,url-rewriting,url-redirection,.htaccess,Url Rewriting,Url Redirection,我想通过.htaccess文件重定向或重写以前的站点URL到相关的新站点URL 出于某些其他原因,这已经在.htaccess文件中,下面的代码如下: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRul

我想通过
.htaccess
文件重定向或重写以前的站点URL到相关的新站点URL

出于某些其他原因,这已经在
.htaccess
文件中,下面的代码如下:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>


要进行此重定向或重写,我不知道要在
.htaccess
文件中添加什么?

A1:应该能够使用通常的:


A2:这是
#part
的简短答案-这是不可能的。但不是因为apachehttpd的行为

#
后面的部分在中称为片段。用户代理(又名浏览器)永远不会发送它,您的服务器也永远不会收到带有片段的URI/URL

用户代理负责解析片段():

作为 这样,片段标识符就不会在特定于方案的代码中使用 URI的处理;相反,片段标识符是分开的 在取消引用之前,从URI的其余部分 片段本身中的标识信息被取消引用 仅由用户代理执行,而不考虑URI方案

  • 使用从开始到结束的
    RewriteCond
    仅将查询字符串与
    pages/oldpage
    匹配来捕获查询字符串
  • 使用
    RewriteRule
    匹配
    请求的URI
    ,即
    中的
    index.php
    http://www.example.com/index.php?pages/oldpage
    然后将其重定向到
    /newpage
    ,这实际上是
    http://www.example.com/newpage
    使用丢弃查询字符串

我最终解决了这个问题,我在下面重写了:

RewriteCond %{QUERY_STRING} pages/oldpage
RewriteRule ^(.*)$ http://www.example.com/newpage/? [R=301,L]

再次感谢大家的帮助

是否需要片段标识符(在
#
之后的部分)来标识要重定向到的页面?还是只需要查询字符串
pages/oldpage
?OP的示例中还包含一个查询字符串。感谢您的回复。我在没有标签的页面上检查了给定的重写规则。但旧的一页被重新书写。我做错什么了吗?添加一些描述可能会helpful@Swanand更新。谢谢。那么,“标签”到底没有什么意义?这看起来和什么是一样的?
http://www.example.com/newpage/
RewriteCond %{QUERY_STRING} ^pages/oldpage$
RewriteRule ^/index\.php /newpage/?
RewriteCond %{QUERY_STRING} ^pages/oldpage$
RewriteRule ^index\.php /newpage [QSD]
RewriteCond %{QUERY_STRING} pages/oldpage
RewriteRule ^(.*)$ http://www.example.com/newpage/? [R=301,L]