【发布时间】:2017-05-10 13:47:50
【问题描述】:
我从未使用过 .htaccess 是我的生活,现在我正在学习它,但我发现它很难理解。
谁能告诉我重写网址的步骤
例如
从这里
www.example.com?s=abc
到这里
www.example.com/abc
【问题讨论】:
我从未使用过 .htaccess 是我的生活,现在我正在学习它,但我发现它很难理解。
谁能告诉我重写网址的步骤
例如
从这里
www.example.com?s=abc
到这里
www.example.com/abc
【问题讨论】:
.htaccess 实际上只是工作的一半。
这个.htaccess会实现你想要的(我认为)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^.*\.(jpg|css|js|gif|png)$ [NC]
RewriteRule ^(.+)$ index.php?request=$1 [QSA,L]
这个.htaccess 在后台将您的所有请求转换为index.php?request=myurl,而在前面它显示mydomain.com/myurl,但是,它不会对从1 到最后一行所述的扩展执行此操作。 (否则在尝试加载 css、js、图像等时会遇到麻烦)。添加您希望从路由中排除的任何扩展。
然而,在 PHP 中仍然存在捕捉这一点的部分。 Everything 现在将通过您的 index.php 进行路由。这意味着您需要一个脚本来“捕获”请求并手动包含所需的文件。
我将在此处为您粘贴一个非常简单的示例:
<?php
$getRequest = explode('/', $_GET['request']);
$page = $getRequest[0];
if( file_exists("/mypages/$page.php") ) {
require_once('myheader.php');
require_once("/mypages/$page.php");
require_once('myfooter.php');
}
else{
echo "page not found";
}
?>
【讨论】: