【问题标题】:remove file extension htaccess not working删除文件扩展名 htaccess 不起作用
【发布时间】:2014-03-01 10:56:00
【问题描述】:

以下代码无法删除文件扩展名 .php

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ $1.php [L,QSA]

我的网址没有从 example/about.php 更改为 example.com/about

【问题讨论】:

  • 你确定你知道重写是如何工作的吗?它确实不会神奇地更改您发送的网页中的链接。它处理传入请求。如果要更改浏览器中的地址,则需要重定向标志[R] 使其发送第二个请求。
  • 我是 htaccess 重写的新手。你能告诉我如何通过删除 .php 扩展名来重写 url。

标签: php .htaccess mod-rewrite url-rewriting


【解决方案1】:

我找到了答案。它的工作。代码如下重写和重定向url

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_FILENAME}.php [L]

它重写并重定向 URL。谢谢大家的回答。

【讨论】:

  • 查阅了很多参考资料,只有这一篇有帮助! :)
【解决方案2】:

此 RewriteRule 应从请求中删除 .php 扩展。试着把它放在你的 RewriteConds 之前。

RewriteRule ^(.+)\.php$ /$1 [R]

【讨论】:

  • 更正后显示The requested URL /example/var/chroot/home/content/71/10295671/html/example/about was not found on this server.
  • 你能用斜杠试试吗?
【解决方案3】:

试试这个

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.*)$ $1.php

【讨论】:

  • 地址栏中的url没有变化。@RaGu
【解决方案4】:

试试这个

RewriteEngine On

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1\.php

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*[^/])/?$ $1.php [L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2019-01-03
    • 2016-12-28
    相关资源
    最近更新 更多