我正在使用 htaccess 从网址中删除 .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
我也看了这些例子,但没有运气:
答案 0 :(得分:1)
我认为您错过了重点 - 它不会更改/重写URL - 它会将.php
添加到您请求的URL中,因此当您请求http://www.example.com/index
时,它会检查所请求的文件名不是目录( !-d
)然后检查存在的有效PHP文件(-f
)。然后重写请求(而不是URL)以请求index.php
文件。
从documentation for mod_rewrite
这是描述
提供基于规则的重写引擎,以便动态重写请求的URL
答案 1 :(得分: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
重命名三个参数
这是为了避免在我的网址中使用?
和&
,然后我会像这样调用我的网页
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);
}
希望它也适合你