在 .htaccess 中一起使用 mod_rewrite 和 mod_alias(重定向 301)?

2023-11-21

我有一个网站,其中包含一组已放入 CMS 的旧 .html 和 .php 页面。

目前在 .htaccess 文件中大约有 30 个 mod_alias 重定向,其形式如下:

redirect 301 /oldpage1.html http://www.example.com/newpage1.php
redirect 301 /oldpage2.php http://www.example.com/newpage2.php
redirect 301 /oldpage3.php http://www.example.com/newpage3.php

但我们希望使用 mod_rewrite 在我们的 CMS 中拥有漂亮的 URL,其形式为http://www.example.com/pagename.php,因此还有以下:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1

目前两者一起应用,结果是:

http://www.example.com/newpage1.php?page=oldpage1.html

如何仅在 mod_alias 重定向 301 语句未匹配时应用重写规则,从而发生以下情况:

http://www.example.com/oldpage1.html-> 重定向到 ->http://www.example.com/newpage1.php-> 被视为 ->http://www.example.com/index.php?page=/newpage1.php

任何提示将不胜感激?谢谢。


我在一个中找到了答案mod_rewrite 和 mod_alias 的精彩解释

问题是 mod_rewrite 总是发生在 mod_alias 之前,无论它们在 .htaccess 中的放置顺序如何。这与这种情况所需的顺序相反。

诀窍是使用RewriteRule [R=301]代替redirect 301,因此对所有内容都使用 mod_rewrite 而不是与 mod_alias 混合。

完整解决方案如下:

RewriteEngine on
RewriteBase /

RewriteRule ^oldpage1.html /newpage1.php [R=301,L]
RewriteRule ^oldpage2.php /newpage2.php [R=301,L]
RewriteRule ^oldpage3.php /newpage3.php [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 .htaccess 中一起使用 mod_rewrite 和 mod_alias(重定向 301)? 的相关文章

  • URL 重写 .htaccess

    我正准备开发一个具有以下 url 结构的网站 我是 url 重写的新手 想知道处理此问题的最佳方法 http domain com index php http domain com about about php http domain
  • htaccess 正则表达式目录到变量

    我需要对某些 URL 从目录到变量进行 301 重定向 EXAMPLE http domain com es stackoverflow gt http domain com stackoverflow lang es http domai
  • 将子域重定向到 CakePHP 操作

    背景 我有一个 CakePHP 应用程序 位于 m 我想写一个根级别的 htaccess文件 它将重定向网站的 子域 作为操作的参数 例如 我想编写一个重写规则 这将导致像这样的重定向 http mysite myserver com ht
  • 在Web应用程序中调用phonegap插件功能

    我正在构建我的第一个phonegap应用程序 当我打开该应用程序时 我立即将用户重定向 window location 到托管我的网络应用程序的服务器 是否可以从那里加载phonegap 插件 因为 deviceready 事件没有触发 我
  • 仅当未找到文件时才重定向请求?

    我希望有一种方法可以使用 mod rewrite 和 Apache 来做到这一点 但也许还有另一种方法可以考虑 在我的网站上 我为客户的网站重新设计版本设置了目录 如果网络根目录是 home blah www 客户端目录将是 home bl
  • 多语言网站的 .htaccess 规则

    我正在重新设计 PHP 多语言网站 en es de fr ru 的 URL 该网站的 URL 是这样的 www mysite com page www mysite com page subpage1 www mysite com pag
  • 将旧锚链接重定向到新锚链接

    我正在彻底修改其他人为我的组织构建的网站 它最初设置为 不太好 的锚链接 其中包含空格 我已经用效果更好的新锚替换了这些锚 例子 其中一位老主播看起来像这样 course To Have哪些浏览器会幸运地转换为 course To 20Ha
  • htaccess重写和auth冲突

    我有 2 个目录 每个目录都有一个 htaccess 文件 html htaccess 该文件进行了重写 将几乎所有内容发送到 url php RewriteCond REQUEST URI exported php gif jpe g p
  • 如何在 .htaccess 文件中创建一个包罗万象的处理程序?

    我想在 htaccess 文件末尾创建一条规则 捕获在此之前未能匹配的所有内容 我怎样才能做到这一点 附 我已经尝试过一切 实际上 我没有 但看起来确实如此 Update 有些人的回复是RewriteRule 或同等内容 这不行 它将匹配一
  • 如何禁用 HTTP 的 HSTS 标头?

    我已将以下内容插入到我网站的 htaccess 中 以便能够访问HSTS预加载列表 https hstspreload appspot com
  • 带有 .htaccess 的漂亮网址?

    我刚刚创建了一个新的 WordPress 页面模板 在其中运行一些 php mysql 脚本 我想对其子页面应用 mod 重写 例如我生成了以下链接 http www quotist com quotes by authors html l
  • Apache mod_rewrite 将双斜杠转换为单斜杠

    我有一个像这样的网址 http example com img php url http example2 com path to image name jpg 所以我通过这个问题创建了一条规则Apache mod rewrite 复杂 U
  • mod_rewrite GUI?

    任何人都有用于开发 mod rewrite 规则的图形工具 理想情况下 它会显示重写管道 然后当给定 uri 实例时 会显示应用时的转换 让它们正确设置总是很痛苦 因此任何使其变得更容易的方法都会有所帮助 对于 htaccess 阅读 mo
  • 控制缓存过期

    通过 Google 网站管理员工具的 PageSpeed 分析器运行我的网页后 它向我报告我的资源没有被缓存 下面是我的 htaccess 文件中直接取自 H5BP 的代码 我是否正确地假设以下过期时间设置正确 但我的实现中出现了问题 或者
  • .htaccess 在动态文件夹名称中加载索引

    我在 htaccess 加载动态文件夹名称中的索引时遇到问题 这是我的目录结构 root products gt this is constant folder name 而不是使用 GET 获取产品 url root products i
  • Magento 中的子域 htaccess 问题

    public html www domain com public html subdomain subdomain domain com public html htaccess public html subdomain htacces
  • 从 FilterControllerEvent 监听器重定向到另一个 Symfony 路由

    我正在尝试设置一个 kernel controller 侦听器 以便在函数返回 true 时重定向到另一个路由 我有可用的路线 但无法使用此路线设置控制器 event gt setController 我收到以下错误 FilterContr
  • mod_rewrite :如果/否则输入 RewriteRule

    以下重写将以数字 4 开头的字符串作为变量传递给 process php RewriteCond REQUEST FILENAME f RewriteCond REQUEST FILENAME d RewriteRule 4 process
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • Application.cpp 中的 SoftException:249:无法访问文件

    我有一个包含新闻消息的网站 而在我的 htacces文件我有这行代码 RewriteRule event 0 9 events php id 1 如果我访问 mysite com index event 1 我会得到一个500 intern

随机推荐

  • Visual Studio 2008 的 XML 架构设计器

    VS 2005确实包含 XSD 文件的设计器 在哪里可以找到 VS 2008 的版本 我只找到了预览版VS 2008 测试版 2 我建议不要使用 XML 模式的数据集编辑器 微软从 VS 2005 开始停止支持模式设计器是有原因的 我们对
  • 如何使用 PowerMock 和 Mockito 模拟枚举类的实例?

    我尝试遵循这个非常相似的问题的答案中提供的示例 但它对我不起作用 我收到以下错误消息 java lang IllegalArgumentException Cannot subclass final class class com mypr
  • python - setup.py sdist bdist_wheel

    我决定创建一个名为 NsmPY 的小模块 一旦我完成了模块背后的代码 可在 GitHub 上找到 我就开始尝试将这个新模块上传到 PyPi 但是 当我运行必要的命令时python3 setup py sdist bdist wheel 程序
  • 无效更新:节中的行数无效

    我正在使用一个项目Microsoft Azure services 在删除行时我收到此错误 Terminating app due to uncaught exception NSInternalInconsistencyException
  • 如何触发MathJax?

    包括我MathJax与脚本 这会自动用格式化标签替换所有数学代码 我怎样才能触发MathJax仅通过 JavaScript 单击 而不是在加载时单击 我怎么知道MathJax将格式化的元素放在页面末尾而不是替换原始代码 1 如何仅通过 ja
  • 为什么 。 PHP $_GET 数组中的 (点) 和空格更改为 _ (下划线)? [关闭]

    Closed 这个问题是无关 目前不接受答案 In PHP 文档我发现以下部分 变量名中的点和空格将转换为下划线 例如
  • 谁是 GWLP_USERDATA 单元的所有者?

    众所周知GWLP USERDATA可用于将一些指针大小数据与指定窗口相关联 但谁有权利这样做呢 显然 如果两段代码独立执行此操作 其中一段代码会覆盖另一段代码 那么必须只有一个所有者 但必须明确确定一个一般规则 谁是所有者GWLP USER
  • 指向链表的指针什么时候会改变实际的链表?

    我有一个单链表 L 并创建一个指向该列表 P 的指针 似乎有时修改 P 会更改实际列表 而其他时候修改 P 对实际列表 L 没有任何作用 只会更改 P 所指向的内容到 假设我创建一个指向 L 的指针 P L 在 python 中 执行类似
  • ASP.NET MVC3 中的随机会话超时

    我有一个获得随机会话超时的应用程序 Windows 2008 R2 上的 IIS 7 5 NET 4 0 我尝试了以下方法 检查应用程序日志是否 w3wp exe 进程崩溃 但没有条目 在应用程序池中禁用快速失败保护 移至 sql serv
  • Objective-C 只读属性是否需要指定强或复制?

    如果我有一个只读字符串属性 是否需要指定strong or retain or copy在声明中 如果我不指定 是否假定其中之一 在我看来 所有权属性只有当你有 setter 时才有用 property nonatomic readonly
  • 根据位置(IP 地址)将用户重定向到不同的网站

    如何使用 IP 地址将访问我的网站的用户重定向到特定位置的网站 我有 3 个特定位置的网站 1 欧洲 2 美国 3 亚洲 简而言之 我想使用客户端的 IP 地址找到客户端的位置 该解决方案需要使用Google API 我得到了使用解决方案
  • 如何使用纯 CSS 将 width:auto DIV 的宽度增加 X 像素

    我有一个DIV 即设置为向左飘浮 有它的width set to auto因为我希望它和它的内容一样宽 On hover 我想增加width of the DIV比如说 20 像素 设置固定值时width in the hoverCSS 类
  • 在 facebook 上使用 opengraph 嵌入 html5 视频

    我为我们的学生电视台建立了一个网站 其概念与 youtube 非常相似 我们希望我们的视频在分享时可以直接在 Facebook 中播放 视频本身仍然托管在我们的服务器上 并且我们的统计数据会更新 网站上的播放器使用 videojs 并且全部
  • HTML5数据属性排序

    我想对具有为评级和日期定义的数据属性的 DOM 元素进行排序 用 jQuery 在前端实现排序的最佳方式是什么 示例代码可见 http jsfiddle net gercheq zhqXd 这是使用表格实现的所需功能 http tables
  • 当 Composer 连接到 GitHub 时,我收到有关弃用身份验证方法的警告。我应该使用什么身份验证配置?

    GitHub 已开始发送有关已弃用的身份验证的电子邮件 但我尚未找到详细说明作曲家的资源auth json应该看起来像在新政权下 我的要求相对简单 使用 Composer 更新开发中的 Symfony 应用程序 并偶尔尝试其他存储库 有了这
  • 使用 Retrofit 和 RxJava 下载并写入文件

    我正在下载一个带改造的pdf文件 我下载它的方式是按块 我用Content Rangeheader 来获取一系列字节 然后我需要将这些字节写入file问题是编写它们的顺序 我正在使用flatMap 函数为下载文件必须完成的每个请求返回一个可
  • 将查询结果存储在变量中

    我有一个查询 我想将其结果存储在变量中 我该怎么做 我试过 hive e use telecom insert overwrite local directory tmp result select avg a from abc hive
  • 将无功值传递给条件面板条件

    我在这里发现了一个类似的案例 没有具体的答案 闪亮 将reactiveValues传递给conditionalPanel但这给了我一个想法 我需要设置变量session sendCustomMessage在 server R 中 然后使用S
  • Python创建长文件时出现IOError异常

    当尝试使用 open fname w 打开新文件时 出现如下所示的 IOError 完整的错误消息如下 该文件不存在 但我使用 os access dir name os W OK 和 os path exists dir name 验证该
  • 在 .htaccess 中一起使用 mod_rewrite 和 mod_alias(重定向 301)?

    我有一个网站 其中包含一组已放入 CMS 的旧 html 和 php 页面 目前在 htaccess 文件中大约有 30 个 mod alias 重定向 其形式如下 redirect 301 oldpage1 html http www e