【问题标题】:How to remove .php extensions without changing all links如何在不更改所有链接的情况下删除 .php 扩展名
【发布时间】:2017-07-02 11:38:26
【问题描述】:

如何在不更改所有链接的情况下删除 .php 扩展名(以及 html,如果它可能在所有链接中)? 我已经搜索并找到了这个解决方案:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]

效果很好但是有一个问题,实际上在我的标题(或所有帖子表单)中,我的链接看起来像这样:

<a href="action.php">Action</a>

然后用户点击,网址是:

mysite.com/action.php

如何在不更改我网站中的所有链接的情况下对我的所有 url 做没有 .php 扩展名的操作

谢谢

【问题讨论】:

标签: php .htaccess redirect mod-rewrite hyperlink


【解决方案1】:

这会起作用

 RewriteEngine on

RewriteRule ^(.+)\.php$ /$1 [R,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ /$1.php [NC,END]

在 apache 2.4 及更高版本上,END 标志用于防止无限循环错误。

【讨论】:

  • 我不是说你的代码不会工作,但你能向 OP 解释一下,你为什么使用 [NC,END] 而不是 [NC,L] 以及为什么 OP 的代码会这样运行。
  • 在 apache 2.4 及更高版本上,END 标志用于防止无限循环错误。
  • 谢谢,请将其添加到您的答案中,以便 Op 和其他有类似问题的人可以从中学习
  • 好它的工作!但是在 localhost 我有这个:localhost/action 但我想要localhost/mysite/action,我该怎么办?谢谢
  • 用 RewriteRule 替换最后一行 !.*\.php$ %{REQUEST_FILENAME}.php [NC,END]
猜你喜欢
  • 2021-04-06
  • 2011-09-18
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 2013-05-20
  • 2014-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多