htaccess 从 url 中删除 index.php

2023-12-23

我遇到一个问题,谷歌用错误的网址索引了一些页面。

他们索引的网址是:

http://www.example.com/index.php/section1/section2

我需要它重定向到:

http://www.example.com/section1/section2

.htaccess 不是我的强项,因此任何帮助将不胜感激。


原来的答案实际上是正确的,但缺乏解释。我想添加一些解释和修改。

我建议阅读这个简短的介绍https://httpd.apache.org/docs/2.4/rewrite/intro.html https://httpd.apache.org/docs/2.4/rewrite/intro.html(15 分钟)并在阅读时参考这两页。

https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html https://httpd.apache.org/docs/2.4/rewrite/flags.html https://httpd.apache.org/docs/2.4/rewrite/flags.html


这是隐藏的基本规则index.php从网址。把这个放在你的根目录下.htaccess file.

mod_rewrite必须使用 PHP 启用,这适用于高于 5.2.6 的 PHP 版本。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.php/$1 [L]

Think %{REQUEST_FILENAME}作为主机之后的路径。

E.g. https://www.example.com/index.html, %{REQUEST_FILENAME} is /index.html

所以最后 3 行意味着,如果它不是一个常规文件!-f而不是一个目录!-d,然后执行RewriteRule.

至于 RewriteRule 格式:

So RewriteRule (.*) /index.php/$1 [L]意味着,如果 2RewriteCond很满意,它(.*)将匹配主机名之后的所有内容。.匹配任何单个字符,.*匹配任何人物 and (.*)使得这个变量可以被引用$1,然后替换为/index.php/$1。最后的效果就是在前面加上一个index.php到整个 URL 路径。

例如。为了https://www.example.com/hello,它会产生,https://www.example.com/index.php/hello 内部.

另一个关键问题是,这确实解决了问题。内部,(我猜)它总是需要https://www.example.com/index.php/hello,但是通过重写,您可以访问该网站而无需index.php,apache 在内部为您添加了该内容。


顺便说一句,额外做.htaccessApache 文档不太推荐该文件。

重写通常在主服务器配置中配置 设置(任何外部<Directory>部分)或内部<VirtualHost>容器。这是最简单的重写方法,推荐使用

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

htaccess 从 url 中删除 index.php 的相关文章

  • 用.htaccess重写动态url结构

    我尝试将动态 URL 如下 重写为稍微不同的结构 要么不起作用 要么我不确定它是否正确 旧网址 URL 1 index php lang AAA zone BBB city CCC str DDD search EEE 新网址 URL 11
  • 这个重写规则是什么意思?

    我正在安装 phpancake 有一个像这样的文件夹 application install library public sql schema install html install php 这条规则意味着什么 RewriteEngin
  • 如何在 htaccess 中创建永久链接

    我想将链接重定向到 Linux 主机中具有 htaccess 文件的另一个链接 你能帮助我吗 from http example com examp to http example com examp php 还有我的另一个网站的另一个 f
  • HTAccess LocationMatch 服务器错误

    我正在尝试使用这个 htaccess改变RewriteBase如果位置是本地或实时服务器 Options FollowSymlinks RewriteEngine on
  • NoInitialContextException:heroku 战争部署

    我一直在开发一个 J2EE 项目 并且在其中使用连接池 也通过部署在 heroku 上的数据库进行访问 我使用以下代码来设置 Connection 对象 Context initContext new InitialContext Cont
  • PHP Github Pull 脚本错误“权限被拒绝(公钥)”

    我已经设置了一个 PHP 脚本来执行 GitHub 拉取 这包含在我的 Github 文件夹中 home mysite public html github github pull php 我的服务器已经有 SSH 公钥 就像我执行git
  • Spring Boot在jar文件中找不到urlrewrite.xml

    我将 Spring Boot 与嵌入式 Tomcat 一起使用 类 UrlRewriteFilter 找不到配置文件 urlrewrite xml 该类使用 servletcontext getResourceAsStream this c
  • 从子域中的 ../ 路径

    假设我创建了一个子域 http subdomain mydomain com http subdomain mydomain com 最初是在这个网址 http mydomain com subfolder folder http mydo
  • 新部署后,React 应用程序必须清除浏览器缓存

    我们正在使用 Jenkins 管道在 apache 服务器上部署 React 应用程序 当我们部署新代码时 大多数新功能都可以正常工作 但并非所有更改都反映浏览器中的最新内容 用户必须打开隐身窗口或清除缓存才能看到新功能 我见过一些相关的解
  • 多语言自定义404 htaccess规则导致重定向循环

    我正在开发一个多语言网站 需要为每种语言设置自定义 404 页面 我在 htaccess 中有以下规则 但不太正常 RewriteCond REQUEST URI ie NC ErrorDocument 404 http www domai
  • mod_rewrite 可以转换任意数量、任意名称的参数吗?

    我对 mod rewrite 完全是个新手 我想做的事情听起来很简单 我不想拥有domain com script php a 1 b 2 c 3 我想要 domain com script a 1 b 2 c 3 问题是我的脚本采用各种组
  • 在浏览器中读取wsdl文件

    当我尝试在浏览器中打开 WSDL 文件 http localhost something file wsdl 时 我被提议下载该文件 但我希望能够在浏览器中以 XML 字符串 形式查看 而不是下载 谢谢 如果您的服务器未发送 WSDL 文件
  • 无法上传大于 8MB 的文件

    我正在尝试制作一个文件上传脚本 并且我已经为这个问题苦苦挣扎了一段时间 我已阅读并尝试了与此相关的所有答案 但无济于事 这是我在 php 中尝试过的 文件名 file uploads On upload max filesize 100M
  • 将 mod-rewrite 添加到现有 PHP 网站

    我正在更新一个 php 应用程序 该应用程序当前不使用 url 重写 目的是隐藏文件扩展名 网站总体结构如下 root index php login php page1 php page2 php page3 php page4 php
  • Apache“无法初始化模块”,因为更改 PHP 配置后模块和 PHP 的 API 不匹配

    php v 给出了这个 PHP Warning PHP Startup memcache Unable to initialize module Module compiled with module API 20060613 PHP co
  • 如何使用 apache2 和 mod_proxy_fcgi 禁用缓冲?

    我在 debian Jessie 上使用 mod proxy fcgi 和 apache 2 4 以及我的 C 应用程序 该应用程序使用 libfcgipp 执行 ServerSentEvents 我的问题是 apache 仍然缓冲我的响应
  • 通过 HTTPS 的隧道

    在我的工作场所 流量拦截器 防火墙变得越来越糟糕 我无法通过端口 22 连接到我的家用计算机 并且缺乏 ssh 访问权限让我感到难过 我以前可以通过将 SSH 移动到端口 5050 来使用它 但我认为最近的一些过滤器现在将此流量视为 IM
  • .htaccess:“重定向永久”并回退到“RewriteRule”

    我有一个网上商店 我们可以在其中切换子目录 从 shop 到根 一些产品和类别名称也发生了变化 我想将一些特定的 URL 重定向到较新的 URL 例如 www domainname de shop product abc to www do
  • 致命错误 - 未找到“Mongo”类

    我正在尝试执行此操作 但我收到以下错误 致命错误 在 C wamp www 中找不到类 Mongo Info PHP 5 38 MongoDB mongodb win32 i386 2 0 2 MongoDB PHP 驱动程序 mongo
  • 如何在 Spring Mvc 项目中设置上下文根

    我在 Tomcat 服务器中使用 Spring MVC 项目 每次运行应用程序时 服务器上下文根都会更改 如何设置固定上下文根 我的项目名称是 DemoApplication 首先部署此上下文根 路径是 http localhost 808

随机推荐