【问题标题】:How do I remove the '.php' extension from URLs?如何从 URL 中删除“.php”扩展名?
【发布时间】:2012-06-14 23:45:20
【问题描述】:

这是 PHP 文件所在的位置:

ts1.WEBSITENAMEHERE.biz/cp/

.htaccess 文件也在此文件夹中。 我想从 'FILENAME.PHP' 中删除 '.php'。

这是我当前的“.htaccess”文件:

Options +FollowSymlinks
RewriteEngine on 
RewriteBase /cp
RewriteRule ^(.*)/$ $1.php

但它不起作用。这是为什么呢?

【问题讨论】:

  • 如果您无法让任何 .htaccess 规则正常工作,请务必检查站点根文件夹的 设置并确保 AllowOverride 设置为“all”而不是“none”(或缺少 AllowOverride)。这通常在 httpd.conf 虽然它也可以在 vhosts.conf 如果你有多个站点httpd.apache.org/docs/current/mod/core.html#allowoverride
  • 猜猜这将适用于您的情况RewriteRule ^(.*)\.php$ $1

标签: php .htaccess url file-extension


【解决方案1】:
RewriteEngine on
RewriteBase /cp/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !\.php$
RewriteRule .* $0.php [L]

【讨论】:

  • 这是重写索引目录返回错误。例如:/cp/.php 我想要:/cp/
  • @Aaron Walker: RewriteCond %{REQUEST_FILENAME} !-d
  • 感谢 zerkms!这帮了大忙。
【解决方案2】:

在 DocumentRoot 目录中创建一个 .htaccess 文件。 在该文件中添加以下代码...

##############
RewriteEngine On
RewriteCond %{REQUEST_URI} !^(.*)\.(.*)$
RewriteRule ^(.*)$ %{REQUEST_URI}.php [R]
#############

应该启用 mod_rewrite 才能使其工作。

【讨论】:

    【解决方案3】:
        Options +FollowSymlinks
        RewriteEngine on 
        RewriteBase /cp
        RewriteRule ^(.*) $1.php
    

    我使用这个检查器:http://htaccess.madewithlove.be

    【讨论】:

    • 会造成无限的重写循环
    • 它将在filename.php 上附加.php,所以最后会是filename.php.php
    • @Wh1T3h4Ck5:实际上并没有,它甚至会将.php 附加到filename.php.php 得到filename.php.php.php 并且永远不会到达终点
    • @zerkms...嗯,不太确定,没有测试,但我认为它会执行^(.*) 模式,然后转到$1.php 部分。也许你是对的,但这肯定不会从文件名中删除 .php
    • @Wh1T3h4Ck5:“由于可能的配置错误,请求超出了 10 次内部重定向的限制。如有必要,请使用 'LimitInternalRecursion' 增加限制。使用 'LogLevel debug' 获取回溯。” mod_rewrite 执行循环会重写 url,只要每个迭代循环开始和结束时的 url 不同。在这种情况下 - 他们是,所以 - 这是无限循环:-)
    猜你喜欢
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2023-04-05
    • 2020-08-11
    相关资源
    最近更新 更多