【问题标题】:rewrite .htaccess to remove .php GET method重写 .htaccess 以删除 .php GET 方法
【发布时间】:2013-02-05 05:30:51
【问题描述】:

我计划从我的网页中删除 .php 扩展名。我已经有了要使用的 .htaccess 文件的代码;

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

在开始编辑文件之前,我有一个问题;

当我这样做时,使用 GET 方法的页面会发生什么情况?例如 index.php?mode=logout

这仍然有效吗?如果没有,是否有解决方法?

【问题讨论】:

  • 除非传入 URL 中的参数有查询,否则不会。例子; http://example.com/?mode=logout。在这些情况下,传入的查询将自动附加到资源中。示例:RewriteRule ^([^\.]+)$ $1.php?mode=logout [NC,L] 不需要QSA 标志,除非在重写规则中添加新查询。但是,您应该提供一些 URL 示例以便能够理解您需要什么。但是,在所有情况下,传入的 URL 都必须包含要传递给资源的参数,在这种情况下包括名称。

标签: .htaccess get


【解决方案1】:

您可以包含QSA 以保持查询字符串完整。

RewriteRule ^([^\.]+)$ $1.php [NC,L,QSA]

【讨论】:

  • 但是我必须编辑我的页面吗?因为有些页面通过 GET 方法需要 2 个变量。例如重置页面; reset.php?activation=$variable1&email=$variable2 这个链接会是什么样子?我是否必须编辑页面才能使用新链接?
  • 您不需要编辑您的页面。如果它已经通过 GET 专门获取变量来工作,那么使用 QSA 添加重写应该可以继续工作。它将page/?var1=test&var2=test重写为page.php?var1=test&var2=test
猜你喜欢
  • 1970-01-01
  • 2015-09-18
  • 2015-01-15
  • 2016-01-02
  • 2015-03-14
  • 1970-01-01
  • 2018-05-25
  • 2016-01-10
  • 1970-01-01
相关资源
最近更新 更多