Php 重写Url参数-更改http://myweb/?dept=dept&app=app tohttp://myweb/dept/app
我目前有一个需要优化的web应用程序,我正在尝试实现的方法之一是: 从 我目前将此作为PHP代码:Php 重写Url参数-更改http://myweb/?dept=dept&app=app tohttp://myweb/dept/app,php,apache,url-rewriting,Php,Apache,Url Rewriting,我目前有一个需要优化的web应用程序,我正在尝试实现的方法之一是: 从 我目前将此作为PHP代码: if(empty($_REQUEST['dept'])) { $folder = "apps/"; } else { $folder = str_replace("/", "", $_REQUEST['dept']) . "/"; } if(empty($_REQUEST['n'])) { include('user/home.php')
if(empty($_REQUEST['dept'])) {
$folder = "apps/";
} else {
$folder = str_replace("/", "", $_REQUEST['dept']) . "/"; }
if(empty($_REQUEST['n'])) {
include('user/home.php');
} else {
$app = $_REQUEST['n'];
if(file_exists($folder.$app.".php")) {
include($folder.$app.".php");
} else {
include("global/error/404.php");
}
}
我该怎么做
我目前有一半是因为:
RewriteRule ^([A-Za-z]+)$ /index.php?app=$1
但这只是重写了其中的一部分
谢谢这应该可以:
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&app=$2 [QSA]
您需要QSA部分,以便将任何GET参数附加到重写的URL
您可能会发现,将所有内容重写为index.php,然后在那里处理url拆分,会更加灵活,例如
.htaccess:
#only rewrite paths that don't exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
<?php
$parts = explode('/', $_SERVER['PATH_INFO']);
$dept = isset($parts[0]) ? $parts[0] : 'someDefault';
$app = isset($parts[1]) ? $parts[1] : 'anotherDefault';
PHP:
#only rewrite paths that don't exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
<?php
$parts = explode('/', $_SERVER['PATH_INFO']);
$dept = isset($parts[0]) ? $parts[0] : 'someDefault';
$app = isset($parts[1]) ? $parts[1] : 'anotherDefault';
许多框架执行此操作的方式是使用以下规则之一:
RewriteRule ^(.*)$ /index.php?q=$1
RewriteRule ^(.*)$ /index.php
在第一种情况下,您将在$\u get[“q”]中获得查询字符串。
在第二种情况下,您必须从$\u请求或其他内容获取查询字符串。(只需做一些var_转储,直到找到所需内容即可)。
然后你爆炸(“/”)这个,你就都准备好了
看看是怎么做的
您还应该添加以下条件以允许站点打开静态文件(如images/css/js/etc)。他们告诉apache,如果URL指向与文件、directoy或符号链接实际匹配的位置,则不要重写。(必须在“重写规则”指令之前执行此操作)
我不知道,但我为你平衡了:)