删除 php 扩展名,停止访问带有 .php 扩展名的 url 并删除尾部斜杠

2024-03-08

我希望我的网址没有扩展名,因此没有 .php 扩展名,我也希望没有机会访问带有尾部斜杠的网址。

如果您尝试使用 .php 访问它,以下内容将删除 php 扩展,然后重定向到无扩展的 url

我开始编写一条规则来阻止您使用 / 和重定向进行访问,但它不起作用,有什么帮助吗?

#this removes php extension
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

# stops you accessing url with.php
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^.?\ ]+)\.php
RewriteRule ^([^.]+)\.php(/.+)?$ /$1%{PATH_INFO} [R=301]

# stops you accessing url with / **DOESNT WORK**
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$  /$1 [R=301,L]

你正在向后看事情:你的第一条规则不是“删除 php 扩展”,而是adds it到尚未包含句点的 URL(从技术上讲,任何不包含句点的 URL)。

我想你想要更多这样的东西:

RewriteEngine On
RewriteBase /

# Remove .php from any URLs that contain it, using an external 301 redirect
RewriteCond %{QUERY_STRING} !^no-redirect-loop(&|$)
RewriteRule ^(.*)\.php$  $1  [NS,R=301,L]

# Now add it back internally
RewriteCond %{QUERY_STRING} !^no-redirect-loop(&|$)
RewriteRule ^(.*)$  $1.php?no-redirect-loop  [NS,QSA]

Edit:调试时另一个类似的答案 https://stackoverflow.com/questions/7812059/simple-301-redirect-with-variable-not-working-why/7816300#7816300,我意识到我之前发布的解决方案在 .htaccess 文件中不起作用。我编辑了上面的示例代码,使用一个相当丑陋的克鲁格来打破重定向循环。 Kluge 的一个副作用是所有脚本都会看到一个额外的空 URL 参数,名为no-redirect-loop.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除 php 扩展名,停止访问带有 .php 扩展名的 url 并删除尾部斜杠 的相关文章

  • 如何使用浏览器缓存配置 ETag

    我已经通过以下方式为静态站点设置了浏览器缓存 htaccess文件通过设置 BROWER CACHING 1 Day for images
  • 重写后.htaccess图像不显示

    我有一个问题 URL 已被这样重写 RewriteEngine on RewriteCond REQUEST URI index php RewriteRule index php test 1 NC L 我的图像和 CSS 样式都没有被应
  • PHP 路由 - 样式表无效

    我用 PHP 创建了一个基本的路由系统 url 被分割成一个数组 这样我就可以根据 URL 决定显示什么 例如 www domain com page option param 因此 在我的index php 中 我为页眉 内容和页脚定义了
  • 将子域重定向到新域

    大家好 尝试让 301 重定向正常工作但遇到了麻烦 我需要将 sub domain1 com 重定向到 www domain2 com 并确保所有文件名或参数都随之发送 这就是我正在尝试的 RewriteCond HTTP HOST dom
  • 从 URL 中删除文件扩展名

    我从未使用过 mod rewrite 但我想从网站的网址中删除所有文件扩展名 我需要遵循什么规则才能做到这一点 我已经尝试过这个 但是每次我单击网站上的链接时都会出现内部错误 RewriteRule 1 php L Options Mult
  • htaccess目录索引重定向寻找css错误的地方

    你好 在我的 htaccess 文件中 我放置了此代码以确保我的目录索引文件设置为 v2013 index html 所以我把这段代码 DirectoryIndex v2013 index html 然后我希望它看起来像 mydomain
  • 第301章

    Problem 访客打开网址website com i 133r534 213213 12312312但此网址不再有效 需要将其转发到website com 视频 133r534 213213 12312312 我尝试过的 在过去的几个小时
  • Apache mod_rewrite 内部到不同的端口

    是否可以使用 mod rewrite 内部重定向 因此地址栏中的 url 不会更改 到同一主机上的不同端口 例如 http host com 8080 gt http host com 9999 myapplication param va
  • 点击取消时 htpasswd 被绕过

    在我的 htaccess 中 我有以下代码 用于保存 admin 区域 如果我提供了错误的用户名密码 它会不断弹出正确的用户名 但如果我按取消 我可以看到我的限制区域 而不是加载错误页面 这是怎么回事 谢谢 AuthName Restric
  • 重写 .php 扩展名

    请问我该如何重写 有人可以重写这个网址吗 to http localhost display news cat 14 2 http localhost display news cat 14 2 谢谢 您可以使用 htaccess 文件来做
  • 绕过带index.php和不带index.php的url的htpasswd身份验证

    我已经使用 htaccess 文件添加了 htpasswd 保护进行身份验证 现在我想绕过身份验证www website com and www website com index php其中两个 url 都在访问 index php 文件
  • django获取FileField的绝对路径

    我试图在模板上调用 FileField 时检索绝对路径 以 http 开头 我怎样才能做到这一点 ie fl uploadedfile gt 返回相对路径 如 media uploads 当我想要的时候This http www blabl
  • 将子域重定向到 CakePHP 操作

    背景 我有一个 CakePHP 应用程序 位于 m 我想写一个根级别的 htaccess文件 它将重定向网站的 子域 作为操作的参数 例如 我想编写一个重写规则 这将导致像这样的重定向 http mysite myserver com ht
  • Windows 服务器上的 .htaccess 文件

    我进行了研究 发现我的 htaccess 文件无法在我的新 Windows 服务器上运行 我发现我应该使用 web config 我尝试了一下 但没有任何效果 然后我发现我可以使用 htaccess 文件 但我必须将其命名为其他名称 例如
  • 仅当未找到文件时才重定向请求?

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

    我正在尝试重定向一系列静态 URL 并且无论尾部斜杠是否存在 我都希望它能够正常工作 foo bar gt tacos foo bar gt tacos 我已经尝试了以下方法以及各种变体 但我总是只得到尾部斜杠存在的匹配项 RewriteR
  • 如何通过htaccess在codeigniter中隐藏index.php和控制器名称

    我想从我的 codeignier url 网站隐藏 index php 和控制器名称 我也想替换这个术语 seo test product ad test product 我在下面提到了我的 htaccess 文件 请指导我如何解决这个问题
  • 将旧锚链接重定向到新锚链接

    我正在彻底修改其他人为我的组织构建的网站 它最初设置为 不太好 的锚链接 其中包含空格 我已经用效果更好的新锚替换了这些锚 例子 其中一位老主播看起来像这样 course To Have哪些浏览器会幸运地转换为 course To 20Ha
  • 如何在 .htaccess 文件中创建一个包罗万象的处理程序?

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

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

随机推荐

  • 使用 AVMutableComposition 缝合(合并)视频时修复方向

    TLDR 查看编辑 我正在 Swift 中创建一个测试应用程序 我想使用以下命令将应用程序文档目录中的多个视频拼接在一起AVMutableComposition 我在某种程度上成功地做到了这一点 我的所有视频都拼 接在一起 并且所有内容都显
  • HTTP 请求损坏

    在接收大量流量的网站上 一小部分请求是这样的 http cheezburger com ScriptResource axd d zaVpgH63ePt90pn br br p a src ScriptResource axd d zaVp
  • TFS 与 JIRA/Bamboo/SVN [关闭]

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

    我部署了一个云函数 如下所示 export const publishVersion functions region europe west2 https onCall async data context gt 然后在我的网络客户端中
  • Golang - ToUpper() 在单个字节上?

    我有一个 byte b 我想选择一个字节 b pos 并将其更改为大写 然后小写 bytestype 有一个方法叫做ToUpper 我如何将其用于单个字节 Calling ToUpper在单字节上 OneOfOne 给出了最有效的 调用数千
  • 柯里化有什么好处?

    我认为我不太理解柯里化 因为我看不到它可以提供任何巨大的好处 也许有人可以用一个例子来启发我 证明它为什么如此有用 它真的有好处和应用吗 还是只是一个被过度重视的概念 两者之间有细微差别currying and 部分应用 尽管它们密切相关
  • BigQuery 分区表在 _PARTITIONTIME 上联接

    有两个分区表 都带有伪列 PARTITIONTIME 我想在 PARTITIONTIME 上加入它们 然后我想使用 PARTITIONTIME 过滤器查询结果表 但我注意到该过滤器仅传播到 JOIN 语句的第一个表 下面是一个例子 WITH
  • 如何在 Sublime Text 2 中解析来自 TypeScript 的错误消息?

    我正在尝试为 TypeScript 设置 Sublime Text 2 构建系统 我已按照我找到的指示进行操作here https stackoverflow com questions 12779631 how to configure
  • 问题 如何使 C# 的 VS IDE 设计器失效/刷新?

    I have 定制表格继承自Form它实现了一个名为的布尔属性Prop 我将使用的表单将继承自定制表格 此属性将对表单进行一些绘制和更改 如果已启用 但是 这并没有按预期工作 设计的 VS IDE 没有刷新以显示更改 但是 如果我按 Ctr
  • 使用 boost::asio::ip::tcp::iostream 的低带宽性能

    我写了一个小测试程序 使用boost asio ip tcp iostream传输约 38 MiB 的数据 include
  • C++ 标准是否强制要求对 wchar_t 进行编码?

    以下是我的 2014 年标准草案 N4140 副本的一些摘录 22 5 标准代码转换方面 locale stdcvt 3 对于三个代码转换方面中的每一个codecvt utf8 codecvt utf16 and codecvt utf8
  • NestedScrollView 下方的 TextView 高度为 wrap_content 不可见

    下面是底页的布局文件 我有一个TextView在嵌套滚动视图下方 当内容较大时 TextView以下NestedScrollView不可见 如果 NestedScrollView 的内容很小 它是可见的 我不明白是什么原因造成的 这是我的布
  • 套接字编程中的客户端到客户端消息传递

    我正在开发一个项目 该项目是基于 C 中的 WinSock 的服务器客户端应用程序 我已经完成了服务器和客户端之间通信所需的任何操作 我能够在它们之间发送和接收消息 现在我需要知道如何完成客户端到客户端消息传递部分以及必须如何完成工作 我只
  • 如何获取图片资源名称

    如何获取动态设置的imageview资源名称 这是图像适配器代码 public class ImageAdapter extends BaseAdapter private Context mContext public ImageAdap
  • 当构造函数采用字符串数组作为参数时,使用反射创建对象实例

    我正在尝试创建一个仅具有以下构造函数的类的实例 覆盖默认构造函数 public HelloWorld String args 我正在做以下事情 Class reflect HelloWorld obj null some logic to
  • Nodejs 错误: module.js:340 抛出错误;

    我尝试运行示例服务器 但在 Windows 上收到错误消息 然后我尝试在我朋友的机器上运行它 但运行得很顺利 windows系统也是如此 我不知道发生了什么事 让我展示一下源代码和错误消息 源代码 var http require http
  • 在 catch 上下文之外重新抛出异常时如何保留堆栈跟踪?

    TL DR 稍后如何引发先前捕获的异常 同时保留原始异常的堆栈跟踪 因为我认为这对Resultmonad 或计算表达式 尤其是 由于该模式通常用于包装异常而不抛出异常 因此下面是一个已解决的示例 type Result lt TResult
  • Yii2 REST 查询

    嘿 我有一个 ProductController 它扩展了 yii rest ActiveController 问题是我如何通过 HTTP GET 请求进行查询 Like http api test loc v1 products sear
  • android ndk:-fPIC 和 -pie 是互斥的吗?

    我正在使用 Android r10e NDK 为 Android 构建 Unison 文件同步可执行文件 但这并不是真正的 Android 问题 Android gt 5 0 SDK 21 要求可执行文件与位置无关 所以我 编译时将 pie
  • 删除 php 扩展名,停止访问带有 .php 扩展名的 url 并删除尾部斜杠

    我希望我的网址没有扩展名 因此没有 php 扩展名 我也希望没有机会访问带有尾部斜杠的网址 如果您尝试使用 php 访问它 以下内容将删除 php 扩展 然后重定向到无扩展的 url 我开始编写一条规则来阻止您使用 和重定向进行访问 但它不