在PHP页面中使用.htaccess清除URL
您好,我有一个名为在PHP页面中使用.htaccess清除URL,php,html,apache,.htaccess,mod-rewrite,Php,Html,Apache,.htaccess,Mod Rewrite,您好,我有一个名为finittra.com的网站,所有菜单都与页面动态链接。我试图使该网站像CMS一样。如果我点击about菜单,url会显示&如果我点击联系人页面,url会显示siteurl/?page=contact,但我想显示finittra.com/finittra/中的所有内容,就像搜索引擎优化url友好的文件夹或规范链接类型一样。有人来帮我吗?我想试试这样的 RewriteEngine On RewriteRule ^([a-zA-Z]+)/?$ index.php?page=$1
finittra.com
的网站,所有菜单都与页面动态链接。我试图使该网站像CMS一样。如果我点击about菜单,url会显示&如果我点击联系人页面,url会显示siteurl/?page=contact
,但我想显示finittra.com/finittra/
中的所有内容,就像搜索引擎优化url友好的文件夹或规范链接类型一样。有人来帮我吗?我想试试这样的
RewriteEngine On
RewriteRule ^([a-zA-Z]+)/?$ index.php?page=$1 [L,NC,QSA]
这会将每个finittra.com/xyz/
(将可见)重写为finittra.com/?page=xyz
如果你想让你的页面有不同的名字,我想你必须手动完成
RewriteEngine On
RewriteRule ^finittra/?$ index.php?page=contact [L,NC,QSA]
此外,您还必须调整网站上的链接您可能希望使用.htaccess重写URL。您可以使用此mod rewrite生成器: 例如:
RewriteEngine On
RewriteRule ^([^/]*)$ /?page=$1 [L]
但是一个适当的、有组织的方法是使用路由器,试试看
用法示例:
$routes = [
[
"name" => "My_route",
"pattern" => "/{page}",
],
[
"name" => "Another_route",
"pattern" => "/pages/{page}",
]
];
这是您的路由数组,路由器将遍历所有路由,并检查给定的请求url是否与其中任何一个匹配
$factory = new RouterFactory;
$router = $factory->newInstance();
foreach ($routes as $route) {
$router->add($route['name'], $route['pattern']);
}
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$match = $router->match($path, $_SERVER);
if ($match) {
$params = $match->params;
echo $params['page'];
}
用于回显页面参数的URL:
对于POST请求,您需要执行与get相同的操作,但是您需要手动将它们添加到url路径。至少我是这样做的。您必须在项目中使用.htaccess文件,如: .htaccess:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^user/(\d+)*$ ./page.php?id=$1
如果url请求相等:
加载:page.php?id=123