0

我在下面使用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

我也看了这些例子,但没有运气:

1 - 2 - 3

4

2 回答 2

1

我认为您错过了这一点-它不会更改/重写 URL-它会添加.php到您请求的 URL,因此当您请求http://www.example.com/index它时,它会检查请求的文件名不是目录 ( !-d),然后检查是否存在有效的 PHP 文件 ( -f)。然后重写请求(不是 URL)来请求index.php文件。

文档中mod_rewrite这是描述

提供基于规则的重写引擎来动态重写请求的 URL

于 2012-11-16T12:43:30.840 回答
1

我用这个.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

重命名三个参数

  • 第一个是页面
  • 第二个是
  • 第三个是o

这是为了避免在我的 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);
}

希望它也对你有用

于 2012-11-16T13:33:45.787 回答