PHP/.htaccess:从URL中删除PHP扩展名


PHP/.htaccess: removing php extension from url

我正在使用.htaccess代码删除.php我所有网页的扩展名。这是我使用的代码:

RewriteEngine On
RewriteCond /%{REQUEST_FILENAME}.php -f
RewriteRule ^([a-zA-Z0-9_-'s]+)/$ /$1.php

它似乎不起作用。我想我错过了一些东西。当我键入 www.mysite.com/about/以获取 www.mysite.com/about.php 时,它返回错误404(找不到页面)。有人可以说一些东西吗?

谢谢保罗·

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
# If folder does not exist
RewriteCond %{REQUEST_FILENAME} !-d
# and file exist
RewriteCond %{DOCUMENT_ROOT}/$1'.php -f
# uncomment the below rule if you want the "/" to be required 
# otherwise leave as is
# RewriteRule ^([^/]+)/$ $1.php [L]
# internally show the content of filename.php
RewriteRule ^([^/]+)/?$ $1.php [L]

上述规则将:

  1. 如果文件夹存在,则不会重定向
  2. 如果文件不存在,则不会重定向
  3. 将重定向/之前的内容(如果文件名存在)

因此,它将适用于所有这些示例:

http://domain.com/about/
http://domain.com/about
http://domain.com/contact/
http://domain.com/contact

如果需要,您可以删除?,就像注释规则一样,使其仅接受以/结尾的URL。

http://domain.com/about/
http://domain.com/contact/

现在,这些是上述工作的重要步骤:

  1. 例如,它必须进入根文件夹的.htaccess /home/youraccount/public_html/.htaccess
  2. 重写规则之前的选项非常重要,特别是-MultiViews
  3. 该文件必须存在于.htaccess所在的同一位置,例如在您的情况下,about.php文件
  4. PHP 必须明显地工作。

规则末尾的斜杠似乎可能存在,也可能不存在。 添加?使其成为可选,以便mysite.com/aboutmysite.com/about/都匹配。

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-'s]+)/?$ /$1.php

很难说这是导致您的问题的原因,还是其他原因。mysite.com/about.php也会给你一个错误吗?

相关文章: