【问题标题】:Strip file extension from URL从 URL 中删除文件扩展名
【发布时间】:2013-03-14 20:18:39
【问题描述】:

我试图弄清楚如何从 url 中删除文件扩展名。 我想更改 www.website.com/index.php 以显示 www.website.com/index。

我一直在努力解决这个问题

RewriteRule ^about$ about.php [L]

当我将此代码插入 htaccess 文件时,它所做的只是扭曲了我的网站,实际上它看起来像是删除了 css,很奇怪..

我在 wamp 服务器上本地运行我的网站。

关于如何让它发挥作用的任何建议?

【问题讨论】:

  • 我尝试了该代码,但不再出现错误,但扩展仍然存在。
  • 那些.htaccess 脚本将使页面在有和没有文件扩展名的情况下工作。他们不会将带有扩展名的页面重定向到没有扩展名的页面。将您的链接更改为不包含文件扩展名,一切都会正常。
  • 关于将此类请求 (website.com/profile?name=christian) 更改为 (website.com/profile/christian) 的任何建议。
  • 这里之前也有人问过这个问题。尝试搜索 htaccess rewrite。

标签: php .htaccess


【解决方案1】:

这很可能是您使用相对路径链接样式表的结果。示例:

<link rel="stylesheet" type="text/css" href="css/style.css" />

当您访问http://example.com/about/ 时,Web 浏览器正在查找样式表:http://example.com/about/css/style.css。

要解决此问题,请使用从您的 Web 根目录开始的绝对路径:

<link rel="stylesheet" type="text/css" href="/css/style.css" />

注意:您可能还必须为图像使用绝对路径。

【讨论】:

  • 在发布答案后完全改变您的问题并不是礼节,但是,内部服务器错误问题可能是由于 Apache 未启用 mod_rewrite 引起的。你能验证它是吗?
  • 样式工作正常,然后出现服务器错误。更改问题正在消除我不再遇到的问题。我去看看是不是。
  • 我将 #LoadModule rewrite_module modules/mod_rewrite.so 更改为 LoadModule rewrite_module modules/mod_rewrite.so 并重置 wamp。还是什么都没有:/
  • 搞定了,我的错。我还在 index.php 上,当我删除 .php 时它起作用了..
  • @ChristianRankin。如果您没有更多问题,请不要将其从问题中删除。相反,将问题标记为已回答。 Stack Overflow 不是您的个人调试服务:我们希望问题和答案也能为其他人提供价值。当你不再需要它们时,不要删除它们。
【解决方案2】:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

尝试将这些行添加到站点根目录中的 .htacess 中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-08
    • 2023-04-05
    • 2012-05-12
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    相关资源
    最近更新 更多