代码片段 → HTAccess → 从 URL 中删除文件扩展名 从 URL 中删除文件扩展名 Chris Coyier on 2009 年 11 月 11 日 RewriteRule ^about$ about.php [L] 这部分代码将使 http://example.com/about.php 能够在 http://example.com/about 加载。
以下内容可能被认为过分,但我喜欢更进一步,添加一个尾部斜杠。如果斜杠丢失,我感觉好像缺少了什么……未完成?可能只是我的个人怪癖吧。
此规则将匹配 site.com/path/ 并检查 site.com/path.php 是否存在。如果文件存在,则继续进行重写。
RewriteCond /%{REQUEST_FILENAME}.php -f
RewriteRule ^([a-zA-Z0-9_-\s]+)/$ /$1.php
这可能看起来很菜鸟,但如果你想要一个斜杠在 http://example.com/about 之后,你也可以简单地做 http://example.com/about/index.html,这要容易得多。
但我猜你有一个特定的情况,允许使用你的 .htaccess 方法 =]
但这有点违背了目的,不是吗?想法是删除所有这些难看的文件扩展名和技术词语从你的 URL 中。
我认为 @bram 的意思是 http://example.com/about/ 将解析为 http://example.com/about/index.html(不显示 index.html 部分)。
除了 RewriteRule ^([a-zA-Z0-9_-\s]+)/$ /$1.php 你还可以使用 RewriteRule ^(.*)/$ /$1.php
Greg,感谢你在这里的帖子。太棒了。
这个看起来简单一些
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
这个版本会破坏任何带有单词之间连字符“-”的 URL。
尽管如此,Greg 的代码似乎也存在这个问题……
我从未遇到过这个问题。事实上,我刚试了一下,它工作正常。
尝试了以上所有示例后,
RewriteRule ^about$ about.php [L]
&
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
我无法看到我的网站 URL 发生了任何变化。
当我重新加载页面时,后缀仍然可见。
有什么想法可以解决这个问题吗?
mod rewrite 仅在 apache 服务器上运行。
在尝试之前,请确保你在 apache 服务器上工作,并且 mod rewrite 模块/扩展已启用。
@Chris Radford
您好 Chris Radford,您的服务器可能存在一些问题,或者您可能没有使用 apache。
我已经使用过上面的代码,它在我的网站上运行良好。
http://jayjalaramext.com/brass-section-profile 打开 http://jayjalaramext.com/brass-section-profile.php
谢谢
这很不错
我无法看到我的网站 URL 发生了任何变化。如何改变它?当我访问时,每次都会找到 .html 扩展名。请给我一个简单的解决方案来解决这个问题……我正在等待专家回复……谢谢您
感谢 Dyllon。
尊敬的 Dyllon,
您没有提到如何应用此代码!为此我将指导…
我们将创建一个名为(.htaccess)的文件,然后粘贴此代码。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
并将它保存到网站的根目录中。
然后我们将逐个更改链接,例如将 about_us.php 更改为 about_us 等等。
继续享受编程。
谢谢。
大家好
为了删除 .html
尝试了许多不同的方法后,这个方法对我有用。在 .htaccess 根目录中
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $.html [L]
我想要这个代码片段,但如何使用它?在哪里使用它?请详细解释一下。
将它放在您希望更改生效的目录中的 .htaccess 文件中
简单地说:此规则插入到 Apache 服务器的 .htaccess 文件中。如果您没有此文件,则必须创建它。并且这需要您的主机已启用重写模块。
您好!我有一个关于 URL 重写的问题。我使用动态 php 文件来加载我的帖子,就像往常一样,我使用重写以这种形式:mydomain.com/id_title-of-the-post,因此,正如您所猜测的那样,实际 URL 类似于 mydomain.com/file.php?id=XX,我在数据库中查找 id=XX 的帖子。
在这种情况下,URL 中唯一真正重要的部分是“id”部分。您可以输入 mydomain.com/id_another-stupid title-of-the-post,您将访问相同的帖子。
但是我看到,就像您的网站一样,您的 URL 是这种形式 css-tricks.com/category/title-of-the-post ……您没有在任何地方使用 ID,所以我现在唯一能想到的就是您的数据库查询查找标题字段=帖子的标题的帖子。
我说的对吗,还是胡说八道?我也可以执行那个查询,但我认为只查找 ID 对数据库来说要快得多。
这都是基于您也使用一个动态文件来加载您的帖子,并且每个帖子都不是一个独立的 html 文件。
如果您能在这方面给我一些启发,我将不胜感激。(我真的很喜欢您的网站^^)。来自秘鲁的问候 =]
太棒了,我之前不知道可以这样做。稍后我会在我的网站上使用它 :)
Dyllons 的方法对我有用。感谢您,我一直都在寻找,但我找到的其他方法对我不适用。
您好 Chris 和大家。
这是我的第一篇帖子。感谢所有精彩的技巧!我想分享我最喜欢的脚本版本。它不会添加尾部斜杠,除非您访问索引文件。请记住从您的 href 链接中删除“.php”。
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]
大家好
一个问题。我使用了这个技巧,它在主根目录中的文件中运行良好
RewriteRule ^about$ about.php [L]
我的问题是子目录文件
RewriteRule ^/path/about$ /path/about.php [L]
有人可以帮我使用这个技巧吗?
您好
从 URL 中删除文件扩展名在我的网站上不起作用。您可以提供一些解决问题的技巧吗?
除非您使用单个访问点,否则您可能需要在每个目录中放置一个 .htaccess 文件,以指定该目录的重写条件。
以这个代码片段为例,您需要将这个 .htaccess 文件放在 http://www.example.com/about 目录以及 http://www.example.com/about/sub 目录中。
如果要从 URL 中删除 .php 和 .html,代码应该是什么?
我只想说,评论“记住从你的 href 链接中删除“.php””是让我成功的那一道神奇的光芒!我一开始没有这样做,但现在它运行得非常棒!
这个最初的建议效果很好,但意味着你需要列出每个要删除扩展名的页面,这可能会变得相当繁琐,所以我尝试了 Doug 建议的方法,该方法有效,并且意味着它可以在全站范围内使用,而不是指定每个页面。Boris 建议的方法也奏效,并且代码减少了一行,所以我正在使用它。
所以,问题是:有没有办法将这个全站范围的代码与 301 结合起来,以自动将所有请求重定向到它们的无扩展名 URL?
附注:总的来说,这是一个非常棒的网站,我很喜欢 htaccess 的技巧。
是的,在所有页面中更改扩展名很繁琐,请您发送您一次性使用的代码
@Richard Ellis:如果您的网站扩展名不是“.php”,那么您必须将代码中的“.php”更改为“.html”。
代码有效,但现在当您直接访问 http://www.whitebluffsbrewing.com/news 时,它删除了所有我的 CSS – 有什么建议吗?
抱歉,我的英语太糟糕了,所以我使用 Google 翻译:“为了使其正常工作,您必须确保在页面的
<head>
中有元标记<base href = "/" />
,并且 href 指向您的网站根目录……”谢谢!这对我有用!!!!
再次问好。
很抱歉我在之前的帖子中给出了错误的建议 – 从 href 链接中删除 .php。我那时年轻而愚蠢。
我有一个更好的解决方案。我决定详细说明一下,以供有需要的人参考。请查看并继续阅读。
我想您想知道的事情
1. 这适用于那些不使用前端控制器将所有请求强制通过 index.php 的网站。如果您需要它,您必须用您自己的代码替换第三个代码块。
2. 示例仅显示了 .php。如果您想将其与 .html 一起使用,例如,您必须复制粘贴第三个代码块,并将第 1、3 和 4 行中的“.php”替换为“.html”(除非有人有更简洁的方法?)
3. “http://example.com/something/” 的内容可以来自“http://example.com/something.php”或“http://example.com/something/index.php”。
4. 要链接到其他页面,只需 href=”/some/thing/” 或 href=”http://example.com/some/thing/”。
5. 使用 .css 和 .js,您需要 href=”/style.css” 或 href=”/folder1/style.css”。否则,如果您从“http://example.com/folder2/file.php”中使用 href=”style.css”,它将查看“http://example.com/folder2/style.css”。
Boris
@Boris:我在我的网站上使用您的解决方案,我发现它在一级上运行良好。非常感谢!但是如何将其用于具有多级的网站呢?如果我设置了 example.com/contact.html,那么 example.com/contact/ 将访问该页面。但是,如果我创建一个名为 contact/ 的目录,并尝试添加 contact/thanks.html(我想要 example.com/contact/thanks/),那么访问 example.com/contact 就会给我 contact 目录的列表而不是 contact.html。如何解决这个问题?(或者是否有更好的层次结构?)
这对于添加尾部斜杠非常有效,但是如果您想在 URL 中添加一些变量呢?例如,如果我想使用 example.com/something/variable_for_something_template,其中 something 实际上是“something.php”,而 variable_for_something_template 是 something.php 模板查找的值呢?
很棒!我在我的网站上使用了您的代码,它运行良好,但它没有选择 CSS 和 Js 文件
我该怎么办?
谢谢,Boris。您的解决方案对我有用!:)
大家好,
我一直试图从我的网站中删除 .html 文件扩展名。
我已经将一个 .htaccess 文件上传到了我的根目录,其中包含以下内容:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([^/]+)/$ $1.html
没有任何效果。
我之前尝试过:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
同样,我的所有页面都出现了内部服务器错误。
任何帮助将不胜感激……上面的评论主要与删除 .php 有关,所以我不知道这些是否适用。
谢谢!
看起来您已经成功了,也许在不知情的情况下。我访问了您的网站,页面加载了 .html 扩展名,但当我删除 .html 时,它加载了相同的页面。
这些重写规则并不意味着页面在旧名称下不会停止加载,而是让另一个名称也起作用。我想有一种方法可以重定向 .html 来删除扩展名,但我不知道如何操作,我想这里面有一些花哨的技巧。
希望我的帮助有帮助。
更改服务器上的文件管理器中的权限为“644”或“777”也许可以解决问题
很棒的帖子和有趣的话题。感谢分享。
我发现 Boris 最后提交的方案是最佳选择。
有人在使用 ajax 注入主内容时尝试过这个吗?想知道这是否与我缺乏成功有关……?
我在 .htaccess 文件中尝试了这个,但它不起作用,你能检查一下吗?
我将我的论坛 .php 重写为 .html,如下所示;
RewriteEngine On
RewriteBase /forum
RewriteRule ^(.*)_([0-9]+).html$ index.php?id=$2 [L]
RewriteRule ^(.*)_([0-9]+)_p([0-9]+).html$ index.php?id=$2&page=$3 [L]
RewriteRule ^(.*)_p([0-9]+).html$ index.php?act=post&id=$2 [L]
RewriteRule ^(.*)_([0-9]+)_s([0-9]+).html$ index.php?id=$2&start=$3 [L]
RewriteRule ^(.*)_([0-9]+)_clip_p([0-9]+).html$ index.php?id=$2&clip&page=$3 [L]
有人可以帮我删除 .html 扩展名吗?请……
大家好,
我试图重写 http://www.example.com/services.php?m=services&s=scan book&id=2 为 http://www.example.com/services/services/scan-book/2。我尝试了许多方法,还测试了上面的示例。但它仍然不行。我遇到了以下错误。
内部服务器错误
服务器遇到内部错误或错误配置,无法完成您的请求。
请联系服务器管理员,[email protected] 等等……。
有人可以帮我解决我的问题吗?
非常感谢
大家好,
我试图重写 URL http://www.example.com.br/folder/sub_folder/my_profile.php 为
http://www.example.com.br/folder/my-profile。我已经尝试了很多重写方法,但我无法重定向 URL。
请帮帮我解决这个问题。
我在 .htaccess.txt 文件中尝试了很多方法。但仍然没有改变。我认为问题可能有点不同。有人能猜出问题吗?
我不确定这是否总是这样,但尝试从文件名中删除 .txt,它应该只是 .htaccess,并且要注意您的操作系统(如我的 Mac)可能会隐藏以“.”开头的文件。
如果实在不行,我会在上传到服务器后,先不加点,或许加一个 .txt 文件类型,然后重命名它。
嗨,Kumar,
我希望这对你有帮助,
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
它对我有用..
生成 404 页面未找到错误……请给我建议.. 请..
嗨
我使用以下代码,但它在我的本地主机上不起作用,所以请帮帮我。
RewriteEngine on
RewriteBase /test/
RewriteRule ^enquiry$ enquiry.html [L]
嗨,
我想在我的网站上修改 URL,与 WordPress 相同
我有:http://mysite.com/5-remove-file-extention-from-urls.html
如何重写为:http://mysite.com/remove-file-extention-from-urls
htaccess
RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.).html(/?)+$ index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4 [L]
RewriteRule ^page,([0-9]+),([0-9]+)-(.).html(/?)+$ index.php?newsid=$2&news_page=$1&seourl=$3 [L]
RewriteRule ^print:page,([0-9]+),([0-9]+)-(.).html(/?)+$ engine/print.php?news_page=$1&newsid=$2&seourl=$3 [L]
RewriteRule ^([0-9]+)-(.).html(/?)+$ index.php?newsid=$1&seourl=$2 [L]
谢谢。
大家好,
我是创建 htaccess 代码的新手,我遇到了一个非常烦人的问题。
我正在使用 Boris 编写的代码,它可能非常适合我。我唯一的问题是,当我点击以下链接时:http://mydomain.com/login/ 或 http://mydomain/login(实际上是 http://mydomain.com/login.php)它会完美地重定向,但我的 href 会变成如下:mydomain.com/login/login。
据我了解,最后一个斜杠被认为是根目录,因此程序将 URL 附加到它,但我不想这样做。我如何避免这种现象,我的问题是什么?
感谢您提前提供帮助!
你好,
我阅读并尝试了 .htaccess 代码,但没有用。我想输入 http://www.mydomain.com/greatpage 并将其重定向到 http://www.mydomain.com/greatpage.php
我在我的网站上创建了 .htaccess 文件,并将上面列出的代码粘贴进去。什么都没有。我使用的是 GoDaddy,如果这有什么意义的话。我还使用 Smultron 为我的网站编写代码。
帮帮我……
我想更改我的 URL
从:http://domain-name/dir/page1.php
到:http://domain-name/dir/?page1
为此,我在我的 .htaccess 文件中编写了以下代码
RewriteEngine on
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+.php
RewriteRule (.).php$ /dir/?$1 [L,R=301]
RewriteRule (.)/$ $1.php [L]
URL 已完美更改为我想要的方式。但页面保持不变。
例如,
假设我位于 page1.php 页面。当我点击菜单“page2”(page2) 时,
URL 会更改为“domainname/dir/?page2”,但浏览器不会显示“page2”的内容。
我没有使用任何 CMS。它只是一个简单的 php 网站。
我使用了以下代码,但它不适用于 http://www.example.com/index.php 到 http://www.example.com/index
请提供正确的代码,以及如何在我们的 php 文件中使用它,如果有任何发送带截图的邮件给我。
提前感谢…,
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
您是否必须更改链接到内部页面的方式,一旦您实施了它?如果是这样,怎么做?
这是我自己创建的;
AddType text/x-component .htc
RewriteEngine On
RewriteBase /
删除 .php;使用 THE_REQUEST 来防止无限循环
RewriteCond %{THE_REQUEST} ^GET\ (.).php\ HTTP
RewriteRule (.).php$ $1 [R=301]
删除索引
RewriteRule (.*)/index$ $1/ [R=301]
如果非目录,则删除斜杠
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]
添加 .php 以访问文件,但不重定向
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1.php [L]
粘贴链接如下,从博客复制粘贴可能会破坏它 :)
http://pastie.org/6011480
你好 Niall…
我尝试了你的代码..
在代码中将 php 更改为 html
但是页面上的所有链接中只有一个链接有效.. 其他链接显示“404”或访问被拒绝
我还添加了
Options -MultiViews 因为我与 1and1.com 托管。
以下是供您参考我使用的 .htaccess 中的精确代码
Options -MultiViews
AddType text/x-component .htc
RewriteEngine On
RewriteBase /organic-herbal
RewriteCond %{THE_REQUEST} ^GET\ (.).html\ HTTP
RewriteRule (.).html$ $1 [R=301]
RewriteRule (.*)/index$ $1/ [R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1.html [L]
目前我有 4 个页面用于测试.. 1 个是 index.html
以及另外 3 个页面。
我尝试过来自各个论坛的许多代码.. 但没有一个有效..
如果你能帮忙,我会很高兴..
Prasadh
嘿,兄弟,很棒,它有效,非常感谢,但需要一些关于这种类型的 URL 的帮助
http://www.asdf.com?pageid=34
想要 http://www.asdf.com/pageid/34
这对 godaddy VPS 很有效,谢谢 man
FYI,以上代码可以放入任何 Apache 服务器中,并且您可以引用 example.php 或 /example 文件夹,它们也会正确呈现,但不要将名为 foo.php 的文件和名为 foo 的文件夹放在一起,Apache 会生气 :)
希望有帮助 :)
完美 Niall,太完美了,谢谢 :)
如何处理更复杂的事情,例如
http://127.0.0.1/demo/redux/index.php?p=example.txt
如果 .htaccess 位于根目录,应该有效,否则您需要指定域,我认为这是前面的几行;
RewriteBase /
这应该在 URL 中留下 GET 变量干净,没有 index.php
Niall Flynn 的代码是最好的!它在 http://www.equinelux.com 上运行得非常完美
我已经测试了 25 种不同的解决方案,只有这一个让我的早晨变得愉快。谢谢你 Naill。现在我想知道——它真的对 SEO 有必要吗,还是只是……?
是的,这是我的宝贝,我已经研究了一段时间了,它确实有助于 SEO,如果有什么不同的话,我认为不对普通宣传册受众显示文件扩展名是有意义的。
我现在在这里有一篇独立的帖子,用于此 http://www.niallflynn.com/seo-news/remove-file-extension-from-urls/ 因此任何需要帮助或想要添加的人都可以在这里添加一些代码/评论。
谢谢,您的帖子帮助了我,我非常感谢..再次感谢您..:D
嗨,
很棒的帖子。有人能告诉我如何做到这一点,以便它显示
http://www.test.com/test.php 作为 http://www.test.com/anythinghere/test.com
谢谢。
Jack
可能会有所帮助;
http://stackoverflow.com/questions/704102/how-does-rewritebase-work-in-htaccess
不太确定你的意思
请尝试这个(对我有用)
在您的 Web 根目录上创建一个 .htaccess 文件,并将以下代码粘贴进去……
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html
注意:将 html 替换为您文件扩展名,例如:- php、htm、asp
这个对我有用!谢谢!
这对我有用,但我想知道,这怎么能简化..
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)/$ $1.php
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)/$ $1.html
RewriteCond %{REQUEST_FILENAME}.py -f
RewriteRule ^(.*)/$ $1.py
为什么?如果它有效,就没有什么真正的性能可言,它就有效 :)
嗨,
我已经尝试了大约 15 种不同的代码来尝试使页面在没有 .php 的情况下加载,但没有一个起作用。
我联系了我的主机,他们建议服务器上没有任何东西会阻止 mod 重写。
这是我尝试的最新一个。我是否需要将文件以特定格式保存?我下载了原始的空白 htaccess 文件并在 Wordpad 中打开它。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)/$ $1.php
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)/$ $1.html
RewriteCond %{REQUEST_FILENAME}.py -f
RewriteRule ^(.*)/$ $1.py
我在让 RewriteRule 在我的网站上运行时遇到问题。我使用了以下代码,但它似乎不起作用。我真的不知道如何让它在页面加载时删除 .php。
谢谢
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html
尝试在将该代码放入 .htaccess 文件后,从 HTML 中 href 代码中删除文件扩展名。
您尝试过这里的修复方法吗?
http://www.niallflynn.com/seo-news/remove-file-extension-from-urls/
我现在试试。
谢谢
嗨 Niall,我尝试了该代码,它可以工作,但会执行以下操作
1) 当我将鼠标悬停在链接上,例如在“关于我们”上,并查看下方时,它会显示 aboutus.php,但当我点击它时,它会显示 http://www.mysite/aboutus,前面没有正斜杠。
2) 我不希望人们在点击链接之前将光标放在链接上时看到 .php。
请您提供帮助,将不胜感激。
谢谢
哦,这很容易,只需从你的 a href 中删除 .php 链接;
如果你有;
我的链接
把它改为;
我的链接
这将修复它,然后如果有人尝试访问 /zyz.php 或 /zyz/,他们将获得相同的结果 :)
好的,我现在试试。
谢谢
嗨 Niall,
它工作正常。
对不起,我问了太多问题。
另外,我的网站做了一些类似 http://www.mysite/news.php?id=1&content=23 的事情。如何让它显示 http://www.mysite/news/1/23
谢谢
Chika
您好
有人能告诉我如何在子域中执行此技巧吗?
例如
http://www.mysite.com/sub/about.php
应该重写为
http://www.mysite.com/sub/about
或者
http://www.mysite.com/sub/about/
谢谢
http://www.niallflynn.com/seo-news/remove-file-extension-from-urls/
据我记得,需要更改的是第三行 RewriteBase /。
我可以查看这里 http://www.silverstripe.org/general-questions/show/5168
我需要删除文件名/扩展名的一部分。
从
http://example.com/news/local/nameoffile.REMOVE.shtml
到
http://example.com/news/local/nameoffile.shtml
嗨,我在我客户的网站上尝试了这段代码,但它不起作用。我只需要更改 URL
http://www.ninacooke.co.uk/page.php?f=lorem
为
http://www.ninacooke.co.uk/page/lorem
我的第一步是使 http://www.ninacooke.co.uk/page 工作,所以我使用了这段代码
RewriteEngine on
RewriteBase /
RewriteRule ^page$ page.php [L]
但它不起作用。有人能告诉我我应该怎么做吗?
好的,我将代码修改了一下
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^page/([a-zA-Z0-9]+)/$ page.php?f=$1
</IfModule>
但它仍然不起作用……
它应该更改
http://www.ninacooke.co.uk/page.php?f=lorem
为
http://www.ninacooke.co.uk/page/lorem
我做错了什么?
我建议使用以下方法进行测试 http://htaccess.madewithlove.be 我可以帮助你解决这个问题,但最好是你有一个不错的测试环境,因为我不喜欢给人们 500 错误 :)
我通过将 http://www.ninacooke.co.uk/page.php?f=lorem 移动到 http://www.ninacooke.co.uk/page/index.php?f=lorem 并使用这段代码使其工作
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^page/([a-zA-Z0-9]+)$ page/index.php?f=$1
</IfModule>
现在 http://ninacooke.co.uk/page/lorem 工作正常 :)
这很酷
嘿 Monika,你的代码不起作用。
我的本地主机是 localhost/d/page.php?id=contact,我使用了你的代码……但它不起作用。
RewriteEngine on
RewriteBase /
RewriteRule ^d/([a-zA-Z0-9]+)$ d/index.php?f=$1
它应该改为 localhost/d/contact……但没有任何反应?
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]
对我来说效果很好,看起来很多人没有意识到为了让它工作,你需要导航到没有扩展名的 URL,例如 http://www.domain/help.php,你需要浏览到 http://www.domain/help,浏览器将加载 help.php……如果你是这样输入 URL 或通过包含 .php 扩展名的 href 链接到页面,它不会自动删除 .php 扩展名。
希望这有帮助……
或者,你知道,对于这样的任务,避免使用
mod_rewrite
来进行过度处理,只需使用我的网站有一个 WordPress 博客。我使用 htaccess 删除了根文件夹中所有文件的 php 扩展名。当我访问 http://www.mydomain.com/blog 时,它会重定向到 404 页面。我在 WordPress 文件夹中创建了一个 htaccess,其中 Rewrite engine 关闭了,但没有用。
请认真对待这个问题。提前谢谢。
我遇到了同样的问题。有没有解决方法?根目录中的任何子目录都会重定向到 404。
有人找到了解决方法吗?
如何在我的静态网站中删除 .php?
请帮忙。
我这里有一篇可能有帮助的文章 http://www.niallflynn.com/seo-news/remove-file-extension-from-urls/
谢谢 #Niall
通常我们使用这种方式
在使用 .htaccess 后,我得到了显示图像的错误
如果我提供完整 URL,它会正常显示,就像这样
如何不提供此 URL 访问我的图像?
请提供任何建议
嗨!我有一个博客,就像其他网站的 cPanel 一样,我无法找到隐藏的 .htaccess 文件。请告诉我“如何在博客的根目录中找到 .htaccess 文件”,或者我可能会允许,如果为我的博客创建一个新的 .htaccess 文件。请帮我解决问题。感谢并向所有读者致以最诚挚的祝福。
我无法让尾随斜杠工作。当我使用包含尾随斜杠的版本时,我会得到 404 错误。请帮忙。
你好,
我正在做一个网站……我在 .htaccess 文件中遇到了一个问题,当隐藏 url .php 时,它在本地主机上运行完美,但当我上传到实时站点或服务器时,可能会出现 404 文件或目录未找到的错误……
我将更改所有内容,例如 http.conf mod 启用等等……但没有找到结果
我在这个主题上浪费了大量时间,但没有任何结果,所以请帮我……
提前感谢……
我正在等待你的回复……
我不确定这是否可行。我认为删除扩展名最起码会造成问题。我越来越频繁地看到这种情况,但我还是觉得这是个错误。我绝对不会使用尾部斜杠,因为它表示目录。也许对于小型网站或博客来说没问题,但对于大型网站,这似乎风险太大。所有已经指向你页面的链接怎么办?我认为你必须修改所有内部链接。CSS 文件和图片可能无法正常工作。对于流量较高的网站来说,这似乎是一个巨大的风险,尤其是。
你上次输入嵌套网页文件的 URL 是什么时候?大多数人使用链接。像亚马逊这样的商店不这样做,而且它们占据了网页的主导地位。我怀疑这是否真的有 SEO 价值。
嗨,
我想在我的网站上修改 URL,与 WordPress 相同
我有:http://mysite.com/555005-remove-file-extention-from-urls.html
如何重写为
http://mysite.com/remove-file-extention-from-urls
在 htaccess 中?
谢谢。
感谢 Niall Flynn,你的代码完美地工作了。
它应该适用于几乎所有 Apache 服务器,这是一个旧的配置,但似乎仍然有效。
嗨,
我想修改我网站上的 URL(它使用经典的 ASP 构建)
我有:http://mysite.com/test.asp
如何重写为
http://mysite.com/test
在 htaccess 中?
谢谢。
IIS 服务器不使用 htaccess,它是一个通常用于 PHP 设置的 Apache 文件,除非我漏掉了什么。搜索 IIS 或 ASPX 重写脚本应该有所帮助:)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html
我已经尝试过所有方法,但都无济于事,甚至将 html 文件放在子目录中并将其重命名为子文件夹中的 index.html,例如:http://stuartmansfield.com/bio/index.html bio 文件夹,我正在使用 Dreamweaver CS6 FluidGrid 布局 html5,我认为 GoDaddy 不知道如何处理这种情况,有人知道吗?我已经尝试过所有上述方法,我快筋疲力尽了。
如果任何新手遇到这个问题。你必须从源代码中删除所有 .html 链接才能使 RewriteCond 正常工作。对于任何使用 Dreamweaver 的人来说,这很容易在 Dreamweaver 中完成。只需使用“查找”功能并键入 .html 以搜索整个网站,然后选择“全部替换”,无需输入任何内容。
Tom,谢谢,这真的起作用了,谢谢!
非常感谢你提供这个有用的提示!!在我的 .htaccess 文件中效果非常好 =D
我想将所有没有扩展名的页面重定向到带有 .HTML 扩展名的页面。
例如 – /my-page –to–> /my-page.html
谢谢!
Charlie
大家好
为了删除 .html
尝试了许多不同的方法后,这个方法对我有用。在 .htaccess 根目录中
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $.html [L]
我使用的是 ideahosting,如何从 HTML 页面中删除 .html 扩展名?
我想像这样访问 abc/about,而不是 abc/about.html。
有人可以帮助我吗?
我在 .htaccess 文件中使用了上面的代码,但它不起作用
托管公司是 Go-Daddy,但我真的无法使用 Dreamweaver cc Bootstrap FTP 网站进行测试,但仍然无法解决!
你好,我尝试将
ammaco.com/shop_home.php
改为ammasco.com/shop_home/
,请帮忙!你好,
我正在做一个网站,在 .htaccess 文件中遇到问题,当我隐藏 url .php 时,它完美地工作了。
但我需要解决的问题是如何删除这个链接中的 id:
http://trustedbusiness.reviews/details.php?id=3
很紧急。
有人可以帮我吗?如何从我的网站中删除 .html 扩展名?仅适用于一个页面
如何从我的 URL 中删除/隐藏 .html?我使用的是 Adobe Muse,它托管在 web.com 上。请帮忙,我已经尝试过这里列出的所有代码,但没有对 URL 进行任何更改。
我以前使用过一些 Adobe CMS,但从来都不是一个忠实的粉丝,即使是在企业级,但这只是我的意见。同样,像 Kentico 这样的东西(我将其归类为“在其中进行正常操作很麻烦”)通常可以在 CMS 中找到。
我在这里也看到了一些帖子,搜索“SEO 友好 URL”可能会有所帮助;
https://forums.adobe.com/thread/1451607
我使用过 htaccess 进行其他重定向,但是,我对删除扩展名感到困惑,有一些问题。
如果你手动从文件名中删除扩展名,那么你无法在你的计算机上查看页面(我手动编写代码,因此不使用 CMS 等)。我尝试用 MAMP 设置一个网站(永不再用)。
如果你使用 .html 扩展名加载页面,并使用 htaccess 删除 html,使其在没有 .html 的情况下被索引,那么我假设所有外部链接都需要删除 .html。 是吗?
另外,我不明白这种重定向是如何隐藏任何东西的,因为任何人都可以查看源代码。
时间过得很快,但我想要说明一些观点
在某种程度上,这是美观问题(被称为“漂亮 URL”——更易于理解);而且不仅仅是针对 .html 文件!对于各种文件,其中大多数不是 .html 文件,而是 -丑陋- 的 PHP/ASP 文件!
此外,你可以做更多高级的事情,例如将查询字符串转换为普通 URL。
拥有以下内容难道不好吗?
“example.com/sample/anothersample1/anothersample2”
而不是长/丑陋的
“example.com/sample.php?longquery=anothersample1&anotherlongerquery=anothersample2”
(当然,这里没有提到这一点,需要一些工作和头脑)
这不是重定向。它是一个重写。
我能够使用 .hatccess 配置成功
Apache 重写规则
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
请勿删除此行以及下面的行 SSL_REDIRECT:infocare.tk
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^infocare.tk$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
请勿删除此行以及上面的行 SSL_REDIRECT:infocare.tk
在 URL 中添加尾部斜杠
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.[a-zA-Z0-9]{1,5}|/|#(.))$
RewriteRule ^(.)$ $1/ [R=301,L]
从 URL 中删除 .php 扩展名
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+)/$ $1.php
Apache 重写规则结束
在我的 php 文件中
我的链接
效果很好!
感谢帮助!
你好…
这在本地也起作用吗?我正在编写代码,但没有使用任何本地或在线服务器,但我一直收到此“文件未找到”错误。
我有 /store.html,我想使用 /store,如何实现?这段代码对我没有用。