Php 你有权重写url吗?
我希望用户编写一个URL,如Php 你有权重写url吗?,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我希望用户编写一个URL,如 然后,我想在我的PHP代码中使用URL,就像我使用这个URL一样: 这个URL给了我两个主要参数,文件夹和页面,以及som其他可以存在或不存在的变量 在我的master.php-file中,我包含了一个基于以下参数的php文件: $folder = $_GET['f']; $page = $_GET['p']; if(empty($page)) { $page = 'dashboard'; } $path = $folder.'/'.$page; inc
$folder = $_GET['f'];
$page = $_GET['p'];
if(empty($page)) {
$page = 'dashboard';
}
$path = $folder.'/'.$page;
include_once 'pages/'.$path.'.php?otherparm1=somthing&otherparm2=somthing&otherparm3=somthing[...]';
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ master.php?folder=$1&page=$2&something=$3[...] [L,QSA]
</IfModule>
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-F
重写规则^(.*)$master.php?文件夹=$1&page=$2&something=$3[…][L,QSA]
然后您可以像a href那样链接页面:
<a href="http://www.domain.com/adm/folder/page/somthing/somthing/somthing[...]">Link</a>
我认为您不能仅通过.htaccess来完成,因为参数的计数是可变的 加载项.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
此规则将所有404请求传递给index.php和index.php解析url
$parts = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
$folder = $parts[0];
$page = $parts[1];
$otherparm1 = $parts[2];
$otherparm2 = $parts[3];
不要在include path中使用来自http请求的变量,也不要在itI添加代码以检查文件是否确实存在以及文件是否在包含有效文件的列表中之前对其进行验证。用户试图访问其他文件或其他不存在的东西时出错。这可能会起作用。我需要包含正确的php文件,但是有一个问题,页面中包含的所有文件都需要重写url。在示例中,是指向css文件的路径。是否可以修改.htaccess代码以便只重写php路径?此重写仅针对服务器上没有文件的URL重定向到index.php(针对404错误)。向css显示带有错误URL的页面html。css文件和图像在页面上不起作用。当我检查源代码时,指向它们的链接起作用,但只有在我将整个URL用于域和所有内容之后。知道怎么修吗?我终于修好了。我必须更改所有css和脚本引用,使其具有完整路径。它是用一个简单的PHP代码实现的。谢谢你的帮助:-)对不起,我没有让它工作。使用了Max P的解决方案。