【问题标题】:.htaccess extensionless pages, 404 when extension is included.htaccess 无扩展名页面,包含扩展名时为 404
【发布时间】:2012-12-21 14:55:22
【问题描述】:

我正在通过删除其文件扩展名来清理我的页面的 URL,并且网络很快提供了以下 .htaccess 代码:

重写引擎开启 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f 重写规则 ^(.*)$ /$1.php

它可以工作,但仍然可以像以前一样通过在末尾添加 .php 来访问文件。我不要这个!理想情况下,我希望每个以 .php 结尾的访问页面都被视为仅在没有 .php 部分的情况下键入的内容。这能实现吗?

总结一下:

  • www.page.com/example.php 显示 404
  • www.page.com/example 显示 example.php

提前致谢。

【问题讨论】:

    标签: apache


    【解决方案1】:

    您可能还没有在这里寻找答案,但以防万一有人偶然发现这个问题,您可以这样做:

    首先,做一个外部重定向:

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

    然后,进行内部重定向:

    ## To internally forward /dir/foo to /dir/foo.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*?)/([a-zA-Z0-9_-]+)/([0-9]+)$ /new/$1.php?ID=$3 [L]
    

    这会让你到达那里!如果它不起作用,请确保这些位于 htaccess 文件的顶部:

    RewriteEngine On
    RewriteOptions inherit
    Options +FollowSymlinks
    Options -Multiviews
    

    就是这样!我在我的博客上解释编码:http://kimjoyfox.com/writing-seo-friendly-urls-using-htaccess/

    【讨论】:

      猜你喜欢
      • 2017-09-24
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-10
      • 2011-03-24
      • 1970-01-01
      • 2015-04-25
      相关资源
      最近更新 更多