0

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

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

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

总结一下:

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

提前致谢。

4

1 回答 1

0

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

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

## 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/

于 2013-12-19T20:47:27.947 回答