douliao7354 2014-02-23 06:23 采纳率: 0%
浏览 61
已采纳

删除URL .php扩展名会导致404错误

I am rewriting my url to get rid of the .php extension (and hopefully the get variables too as all the help I have gotten is great, but still wont work.

Here is my code:

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[\s?] [NC]
RewriteRule ^ %1 [R=301,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+?)/?$ $1.php [NC,L] 

Now when I use this code, it takes the .php out, but then the error says:

Not Found

The requested URL /index.php was not found on this server.

Meanwhile, if I take that code out, it works fine, but has the .php extension

  • 写回答

2条回答 默认 最新

  • douzhang6646 2014-02-23 06:31
    关注

    I use this code in .htaccess to remove .php extension and redirect .php extension pages to non .php extension pages :

    <IfModule mod_rewrite.c>
     RewriteEngine On
     RewriteRule ^(wp-admin)($|/) - [L] # You don't want to mess with WordPress 
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteCond %{REQUEST_FILENAME}\.php -f
     RewriteRule .* $0.php
    
     # browser requests PHP
     RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
     RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]
    
     # check to see if the request is for a PHP file:
     RewriteCond %{REQUEST_FILENAME}\.php -f
     RewriteRule ^/?(.*)$ /$1.php [L]
    </IfModule>
    

    When the above code is used in .htaccess, you can access PHP pages without the extension and when a user visits a page with .php extension, he/she will be redirected to the page without the extension.

    Example :

    http://example.com/page.php is redirected to http://example.com/page

    http://example.com/page will be the same as http://example.com/page.php

    There wouldn't be any problem when you access PHP files with extension internally :

    <?
    include("page.php");
    ?>
    

    will work without any problem.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog