ram*_*ani 6 php apache .htaccess
我想改变我的网址.这里我有一个像这样的目录结构
htdocs/
example/
public/
login.php
people/
people1.php
people2.php
animal/
animal1.php
animal2.php
404.php
assets/
css/
js/
Run Code Online (Sandbox Code Playgroud)
那么我想按照根目录中的现有目录下面的url
localhost/example/login
localhost/example/people/people1
localhost/example/people/people2
localhost/example/animal/animal1
localhost/example/animal/animal2
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用以下内容制作.htaccess文件
Options +FollowSymLinks
RewriteEngine On
rewritecond %{REQUEST_URI} !^/public/(.*)
rewritecond %{REQUEST_URI} !^/assets/(.*)
RewriteRule .* index.php [L]
Run Code Online (Sandbox Code Playgroud)
它是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';
}
Run Code Online (Sandbox Code Playgroud)
当我去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]
Run Code Online (Sandbox Code Playgroud)
(请注意,^/public/永远不会匹配,因为REQUEST_URI将是/example/public)
然后在您的代码中使用$_SERVER['PATH_INFO']。