简单的问题,但目前我不明白htaccess ...所以我希望你能帮助我。
这是我的.htaccess文件:
#RewriteEngine On
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-l
#RewriteRule ^(.+)$ index.php?page=$1 [QSA]
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ $1.php [L]
在旧服务器上它只适用于第一部分。所以如果我这样打开url:test.com/foo/bar
如果没有index.php,bar.php将会打开。
如果我打开这样的网址:test.com/foo/bar/25/3
25和3位于$_GET['page']
。
希望有人可以提供帮助,非常感谢。
编辑:
新问题,.htaccess运行良好,但如果我登录一边,我会重定向到目录test.com/foo/logged ...有一个新的复杂菜单。
首先我将$_GET
分开:
$url = explode("/", $_GET['page']);
这是记录的/ index.php:
<?php if( $_SESSION) : ?>
<?php include("start.php"); ?>
<?php else : ?>
<?php include(BASE_URL."/login.php"); ?>
<?php endif; ?>
这是我的start.php:
<?php if( strlen($url[0]) > 0 ) : ?>
<?php include("packages/".$url[0]."/view/".$url[1].".php"); ?>
<?php else: ?>
<? include "games.php"; ?>
<? endif; ?>
现在,如果我在记录区域,我无法打开任何菜单链接,如:foo / bar。
start.php中的链接现在必须查看:packages/foo/view/bar.php
。
但该网站总是与logging / index.php相同......
答案 0 :(得分:1)
你的规则如下:
DirectoryIndex index.php
RewriteEngine On
RewriteBase /test/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/test/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?page=$1 [L,QSA]