首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这个RewriteCond是怎么写的?

这个RewriteCond是怎么写的?
EN

Stack Overflow用户
提问于 2012-07-26 03:25:19
回答 3查看 1.2K关注 0票数 0

我想将url从stockpicks.php重写为选股。当我访问www.website.com/时,选股将显示stockpicks.php页面。我使用以下规则。

代码语言:javascript
运行
复制
RewriteRule ^stock-picks /stockpicks.php [PT]

我也想让搜索引擎知道我以前的页面stockpicks.php永久地移动到股票选择。我使用以下规则,但301重定向似乎不起作用。我想RewriteCond是不对的。

代码语言:javascript
运行
复制
RewriteCond %{THE_REQUEST} stockpicks.php$
RewriteRule ^stockpicks.php$ /stock-picks [R=301,L]
EN

回答 3

Stack Overflow用户

发布于 2012-07-26 03:28:54

插入符号^表示当前目录下URL的开始。此目录是.htaccess文件所在的任何目录。几乎所有的匹配都会以插入符号开头。

美元符号$表示要匹配的字符串的末尾。您应该将其添加到中,以阻止您的规则与较长URL的第一部分匹配。

代码语言:javascript
运行
复制
    RewriteEngine on
    RewriteRule ^stock-picks$ stockpicks.php
票数 0
EN

Stack Overflow用户

发布于 2012-07-26 03:43:25

@Johndave的帖子满足了你的第一个需求。

您还需要重定向到请求股票的请求,以便它们在将来使用/ stockpicks.php -picks/(因为这是您想要发布的资源的新位置)。

代码语言:javascript
运行
复制
    Redirect permanent /stockpicks.php http://hostname.com/stock-picks/

为此,我将使用Redirect指令,因为这是让Apache发送"HTTP 301 Moved Permanently“响应的最简单方法。

请注意,这不会陷入循环,因为@Johndave提出的重写规则不会像在最初的尝试中那样重新启动URL映射过程。

如果您确实需要使用PT标志(以便让Apache处理.php文件),那么我认为您可能会有相互冲突的需求。

票数 0
EN

Stack Overflow用户

发布于 2012-07-26 08:19:12

%{THE_REQUEST}与实际的HTTP请求相匹配,可以是以下任意一种:

代码语言:javascript
运行
复制
GET /stockpicks/ HTTP/1.1

GET /stockpicks.php?some=stuff HTTP/1.1

HEAD /stockpicks.php

POST /stockpicks.php HTTP/1.0

等。

因此,您希望RewriteCond的正则表达式看起来像这样(注意需要转义的空格):

代码语言:javascript
运行
复制
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /stockpicks.php
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11657092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档