我想更改我的网址。这里我有一个这样的目录结构
htdocs/
example/
public/
login.php
people/
people1.php
people2.php
animal/
animal1.php
animal2.php
404.php
assets/
css/
js/
那我要根据根目录下的url如下
localhost/example/login
localhost/example/people/people1
localhost/example/people/people2
localhost/example/animal/animal1
localhost/example/animal/animal2
我尝试制作一个包含以下内容的 .htaccess 文件
Options +FollowSymLinks
RewriteEngine On
rewritecond %{REQUEST_URI} !^/public/(.*)
rewritecond %{REQUEST_URI} !^/assets/(.*)
RewriteRule .* index.php [L]
它是 index.php
$requested = empty($_SERVER['REQUEST_URI']) ? false : $_SERVER['REQUEST_URI'];
switch ( $requested ) {
case '/login':
include 'public/login.php';
break;
default:
include 'public/404.php';
}
当我前往 localhost/example/login 时,但目的地是 404.php(错误)。
你能帮帮我吗?
最佳答案
$_SERVER['REQUEST_URI']
变量是完整 URI。所以如果要访问 http://example.com/example/login
$_SERVER['REQUEST_URI']
变量是 /example/login
。您可以尝试将 htaccess 文件更改为:
Options +FollowSymLinks
RewriteEngine On
rewritecond %{REQUEST_URI} !/public/(.*)
rewritecond %{REQUEST_URI} !/assets/(.*)
RewriteRule ^(.*)$ index.php/$1 [L]
(注意 ^/public/
永远不会匹配,因为 REQUEST_URI
将是 /example/public
)
然后在您的代码中使用 $_SERVER['PATH_INFO']
代替。
关于php - 如何重写根目录中的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20648963/