htaccess 外部重写/内部重定向

2023-12-25

我想通过 .htaccess 文件实现两件事。 第一个是

www.hostname.com/index.php?question  -> www.hostname.com/question
www.hostname.com/index.php?myinfo  -> www.hostname.com/myinfo
www.hostname.com/index.php?notification  -> www.hostname.com/notification

所以我使用外部重写来重新表达 URL,如下所示。

RewriteCond %{THE_REQUEST} /(index.php)\?([^&]+)\ HTTP
RewriteRule ^ /%2? [R=301,L]

现在上面的语句正确显示为我想要的。问题是当条件满足时进行内部转换。条件是如果%{THE_REQUEST}等于 ' 之后的任何字符/'.

RewriteCond %{REQUEST_URI} ^/(.*)$ [NC]
RewriteRule ^(.*)$ index.php?$1 [NC,L]

这样我的 php 代码就可以识别$_GET范围。在这里,即使满足条件,它也不会处理 RewriteRule。

第二个问题是

www.hostname.com/index.php?category=spo  -> www.hostname.com/category/spo
www.hostname.com/index.php?category=ite  -> www.hostname.com/category/ite
www.hostname.com/index.php?category=gam  -> www.hostname.com/category/gam

使用外部重写完成转换:

RewriteCond %{THE_REQUEST} /(index)\?category=([^&]+)\ HTTP
RewriteRule ^ category/%2? [R=301,L]

同样,我想在内部将 URL 中写入的任何内容转换回原始格式,因此我使用以下条件来区别于之前的情况,

RewriteCond %{REQUEST_URI} ^/category/(.*)$
RewriteRule ^category/(.*)/?$ index.php?category=$1 [NC,L]

我的 php 代码无法识别$_GET参数和变量。当我使用 htaccess 测试器时,它说它应该可以工作,但事实并非如此。http://martinmelin.se/rewrite-rule-tester/ http://martinmelin.se/rewrite-rule-tester/

我该如何解决这个问题?或者有没有更简单的方法来实现这一点?

谢谢


尝试这些规则:

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/index\.php\?category=([^&\s]+) [NC]
RewriteRule ^ /category/%1? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^category/([^/]+)/?$ /index.php?category=$1 [NC,L,QSA]

RewriteCond %{THE_REQUEST} \s/index\.php\?([^&\s]+) [NC]
RewriteRule ^ /%1? [R=301,L]

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

htaccess 外部重写/内部重定向 的相关文章

随机推荐

  • 如何使用循环或并行计算将大数据输入到 python pandas 中?

    我有一个 8GB 的 csv 文件 但无法运行代码 因为它显示内存错误 file data csv df pd read csv file sep header 0 dtype str 我想使用 python 将文件分成 8 个小文件 按
  • java 11 HttpClient 即使禁用 TLS.1.3 也会导致无限的 SSL 循环

    我面临标准 java http 客户端的问题 由于某种原因 我还不知道它会进入无限循环并利用我拥有的所有CPU 下面是示例堆栈跟踪和无限循环运行的方法 HttpClient 1 Worker 34 232 daemon prio 5 os
  • 有没有适用于 Python 的“漂亮”数据可视化库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有很多用于 Javascript 的 漂亮打印 可视化库 例如 那些列出的here http datavisualization ch t
  • 如何识别ios sdk中的特定通知

    实际上正在开发一个警报项目 现在我对本地通知有疑问 我如何识别特定通知 我们甚至无法将标签设置为本地通知 那么我如何区分它们 example 通知 1 UILocalNotification localNotification UILoca
  • 是否有一个 C# 库提供像 numpy 这样的数组操作[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我开始使用 Numpy 并且非常喜欢它的数组处理功能 我可以在 C 中使用一些库来提供与数组类似的功能吗 我最想要的功能是 从另一个数组创建一个数组
  • 如何在 JavaScript 中添加 ? [复制]

    这个问题在这里已经有答案了 我需要使用appendChild 或 jQuey 的append 附加一些
  • Jquery if $(window) 向下滚动函数[重复]

    这个问题在这里已经有答案了 你好 我需要什么时候 window 向下滚动100 提醒某事 我该怎么做 Try window scroll function if window scrollTop window height document
  • 是否可以重新定义 PHP 常量?

    是否可以重新定义类常量 在 PHP 中 e g class B const C ThisIsAConstant 1 class A extends B self C ThisIsAConstant 2 不 当然不 那么它们就不再是 常数
  • Angular 根据环境动态交换 SASS 样式

    我将 Angular 6 与新的 angular json 文件一起使用 我在其中配置了单独的配置 在这个新配置中 我将 Constants scss 替换为 Constants newconfig scss 运行 ngserve conf
  • 如何在 SQL 中选择没有空值的行(在任何列中)?

    我有一张桌子叫table1 它有 100 列 col1 col2 col100 我明白如何SELECT rows not例如 在特定列中包含空值col1 SELECT FROM table1 WHERE col1 IS NOT NULL 我
  • python 集合推导式是如何工作的?

    Q1 以下是set of a generator expression or a set comprehension 或者它们是相同的吗 如果是的话 是list dict理解也相应的类型转换在发电机上 my set x for x in r
  • html 编码/解码 - ckeditor

    我在 cshtml 页面中使用 ckeditor 将内容输入到我的数据库中 这些内容稍后将显示在带有 html 标签的页面上 以使文本更易于阅读 由于我通过文本区域输入内容 因此收到一条错误消息 指出我正在输入的 html 标签 h1 p
  • 如何在 Matlab 中对齐来自 Kinect 的 RGB 和深度图像

    我正在尝试使用 Matlab 对齐来自 Kinect 的 RGB 和深度图像 我正在尝试使用以下算法来做到这一点this http burrus name index php Research KinectCalibration tocLi
  • php-fpm 不创建 .sock 文件

    我有一个在 Amazon Linux 上运行的 AWS 服务器 我使用本指南安装 php7 页面底部 https forums aws amazon com thread jspa messageID 695576 https forums
  • 如何在R中的xyplot中获得阴影背景?

    using xyplot来自lattice包中 我绘制了多年的时间序列 我会为其中一些年份添加阴影区域 以表明这个时期是 特殊的 例如战争 如果这是微不足道的 请道歉 但我不知道该怎么做 所以如果有人可以帮助我 或者至少为我指出正确的方向
  • 寻找将 Lucene.net 与 ASP.NET 结合使用的示例 [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何将三列设为主键

    我正在尝试学习如何将两个文件匹配在一起 但我已经尝试了 5 个小时了 但仍然不知道该怎么做 第一个文件 600 000 行 包含 4 列 Postal Number Houseletter livingspace 第二个文件 7 000 行
  • 如何让 gcloud auth activate-service-account 持续存在

    我正在使用 bq 命令行工具从 Bigquery 表进行查询 当我登录并退出查询进程正在运行的盒子时 有没有办法让服务帐户身份验证持续存在 我所做的步骤 我登录了linux盒子 通过运行以下命令来验证服务帐户 gcloud auth act
  • Java - 当数据超出限制时打印消息?

    我的代码已经可以工作了 虽然不漂亮 但确实是工作 现在我想编写一段代码 如果文本文件中有 19 条或更多数据 则停止加载数据 然后显示例如 显示 输入无效 的消息 我不知道如何做到这一点 所以任何帮助将不胜感激 package stacka
  • htaccess 外部重写/内部重定向

    我想通过 htaccess 文件实现两件事 第一个是 www hostname com index php question gt www hostname com question www hostname com index php m