我正在使用.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]
上述规则将:
- 如果文件夹存在,则不会重定向
- 如果文件不存在,则不会重定向
- 将重定向
/
之前的内容(如果文件名存在)
因此,它将适用于所有这些示例:
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/
现在,这些是上述工作的重要步骤:
- 例如,它必须进入根文件夹的
.htaccess
/home/youraccount/public_html/.htaccess
- 重写规则之前的选项非常重要,特别是
-MultiViews
- 该文件必须存在于
.htaccess
所在的同一位置,例如在您的情况下,about.php
文件 - PHP 必须明显地工作。
规则末尾的斜杠似乎可能存在,也可能不存在。 添加?
使其成为可选,以便mysite.com/about
和mysite.com/about/
都匹配。
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-'s]+)/?$ /$1.php
很难说这是导致您的问题的原因,还是其他原因。mysite.com/about.php
也会给你一个错误吗?