Php 使用.htaccess mod rewrite从url中删除目录名

Php 使用.htaccess mod rewrite从url中删除目录名,php,.htaccess,codeigniter,mod-rewrite,Php,.htaccess,Codeigniter,Mod Rewrite,我正在从事codeigniter项目,我有以下url: mysite/项目/前端/锦标赛/表格 我想把它变成: 我的网站/项目/锦标赛/表格 我应该在.htaccess中写什么?? 这是我已经拥有的: RewriteEngine on #Send request via index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1

我正在从事codeigniter项目,我有以下url:

mysite/项目/前端/锦标赛/表格

我想把它变成:

我的网站/项目/锦标赛/表格

我应该在.htaccess中写什么?? 这是我已经拥有的:

RewriteEngine on

#Send request via index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
你试过了吗

 RewriteRule ^mysite/Project/frontend/tournaments/table/([^/]*)$ mysite/Project/tournaments/table/$1

简单的重写规则将解决您的问题,我认为

因此,我将使用CodeIgniter路由功能实现这一点:

假设锦标赛是你的控制器

//Example: mysite/Project/tournaments/2332
// Will accepts numbers or letters
$route['Project/(:any)/(:any)'] = 'Project/frontend/$1/$2';


//Example: mysite/Project/tournaments/table
// Will accepts only letters.

$route['Project/([a-z_]+)/([a-z_]+)'] = 'Project/frontend/$1/$2';
您可以为管理员URL添加另一个路由规则,如下所示:

//Example: Project/admin/users/add
// You can use either (:any) or ([a-z_]+)
$route['Project/admin/(:any)/(:any)'] = 'Project/admin/$1/$2';

我建议你读一读,一开始有点乏味,但它会帮你很多

这不是一个要求人们为你工作/编写代码的地方。表现出一些努力。如果您已经尝试过,但失败了,请在问题中加入您的尝试。如果你还没有尝试,现在是时候了。谢谢你,@Patrick Q。好吧,我尝试了很多选择,但似乎没有一个有效。例如,我试过“重写规则^frontend/(.*)$/$1[QSA]”你试过在Route.php中配置它吗?@Sobiaholic我已经考虑过了,但我不知道如何才能做到这一点。我对正则表达式一点概念都没有。好吧,在尝试这个之前,我发现它有点问题。我的目标是为url工作的每个地址,遵循前端。例如:mysite/project/frontend/segment4/segment5/…我真的很感谢你的兴趣。你让我意识到我没有很好地解释我的处境。我的项目中的控制器分为几个文件夹。用户只能看到“前端”部分。但我不希望所有的路由['mysite/Project/(:any)/(:any)]都转到'mysite/Project/frontend/$1/$2'。他们中的一些人会去其他目录,比如mysite/project/admin/segment/segment更新了我的答案,希望能有所帮助!