我在下面使用htaccess从 URL中删除.php但它不起作用。
http://www.me.com/index.php
应该读http://www.me.com/index
有什么理由吗?
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
我也看了这些例子,但没有运气:
我认为您错过了这一点-它不会更改/重写 URL-它会添加.php
到您请求的 URL,因此当您请求http://www.example.com/index
它时,它会检查请求的文件名不是目录 ( !-d
),然后检查是否存在有效的 PHP 文件 ( -f
)。然后重写请求(不是 URL)来请求index.php
文件。
从文档中mod_rewrite
这是描述
提供基于规则的重写引擎来动态重写请求的 URL
我用这个.htaccess
AddDefaultCharset utf-8
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [L]
DirectoryIndex index.php
RewriteRule ^([a-zA-Z0-9_-]{3,20})/([^/]+)/([^/]+)?$ index\.php?page=$1&s=$2&o=$3 [L]
RewriteRule ^([a-zA-Z0-9_-]{3,20})/([^/]+)?$ index\.php?page=$1&s=$2 [L]
RewriteRule ^([a-zA-Z0-9_-]{3,20})/?$ index\.php?page=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]{3,20})?$ index\.php?page=$1 [L]
ErrorDocument 404 /404
重命名三个参数
这是为了避免在我的 URL 中使用?
and&
然后我这样调用我的页面
http://testsite/page/s/o
如果你这样做print_r($_REQUEST)
,它会给你这个
Array(
page => page
s => s
o => o
)
为避免扩展,我使用以下机制
$file = $_REQUEST['page'] . ".php";
if (file_exists('inc/' . $file)) {
include('inc/' . $file);
}
希望它也对你有用