PHP代码点火器Htaccess。删除控制器名称和index.php并重写url

PHP代码点火器Htaccess。删除控制器名称和index.php并重写url,php,.htaccess,codeigniter,mod-rewrite,Php,.htaccess,Codeigniter,Mod Rewrite,大家好,我一直在Codeigniter的一个新项目上工作,除了url之外,一切都很好 我想要的是从我的URL中删除控制器名main和单词index.php 就像我的url现在是这样的 当前URL:www.domain.com/index.php/main/contact 其中main=控制器名称,联系人是功能名称 所需url:www.domain.com/contact 我知道我可以通过htaccess删除index.php和controller name,我还实现了一些bt的功能。问题是,我在

大家好,我一直在Codeigniter的一个新项目上工作,除了url之外,一切都很好

我想要的是从我的URL中删除控制器名main和单词index.php 就像我的url现在是这样的

当前URL:www.domain.com/index.php/main/contact

其中main=控制器名称,联系人是功能名称

所需url:www.domain.com/contact

我知道我可以通过htaccess删除index.php和controller name,我还实现了一些bt的功能。问题是,我在网站中的所有链接都已列为domain.com/index.php/main/contact,因此我想要一些可以自动将url重定向到所需url而无需index.php和controller的东西名字

注意:控制器名称始终为“主”

我的htaccess文件在根文件夹中如下所示:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.php [L]
</IfModule>

# remove index.php
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$ [NC]
RewriteRule ^ %1 [L,R=301,NE]

# To externally redirect /dir/file.php to /dir/file
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]

# To internally forward /dir/file to /dir/file.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

Header set Access-Control-Allow-Origin "*"

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 
重新编写引擎打开
重写cond%{HTTPS}关闭[或]
重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
重写cond%{HTTP_HOST}^(?:www\)?(.+)$[NC]
重写规则^https://%1%{REQUEST_URI}[L,NE,R=301]
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^index.php[L]
#删除index.php
重写cond%{REQUEST_METHOD}!邮递
RewriteCond%{THE_REQUEST}/index\.php[NC]
RewriteCond%{REQUEST_URI}^(.*/)index\.php$[NC]
重写规则^1[L,R=301,NE]
#从外部将/dir/file.php重定向到/dir/file
重写cond%{REQUEST_METHOD}!邮递
RewriteCond%{THE_REQUEST}\s/+(.+?)\.php[\s?][NC]
重写规则^/%1[R=301,NE,L]
#将/dir/file内部转发到/dir/file.php
重写cond%{DOCUMENT_ROOT}/$1.php-f
重写规则^(+?)/?$$1.php[L]
标题集访问控制允许原点“*”
重新启动发动机
1美元^(索引\.php | resources | robots\.txt)
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$index.php?/$1[L,QSA]
我们非常感谢以这种方式提供的任何帮助。 另外,我不想对我的表单提交有任何问题,因为它们有操作URL等。

1)要从URL中删除
index.php
,您可以遵循以下步骤

2)要将url从
www.domain.com/index.php/main/contact
重写为
www.domain.com/contact
,您必须在
application->config->routes.php
中进行路由。像这样

$route['contact'] = 'main/contact';
1)要从URL中删除
index.php
,您可以遵循以下步骤

2)要将url从
www.domain.com/index.php/main/contact
重写为
www.domain.com/contact
,您必须在
application->config->routes.php
中进行路由。像这样

$route['contact'] = 'main/contact';

行上的
重写引擎下方插入此规则,作为最上面的规则

# remove /index.php/main/ from URLs
RewriteCond %{THE_REQUEST} \s/+index\.php/main/ [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^index\.php/main(/.*)?$ https://%1$1 [L,NC,NE,R=301]

行上的
重写引擎下方插入此规则,作为最上面的规则

# remove /index.php/main/ from URLs
RewriteCond %{THE_REQUEST} \s/+index\.php/main/ [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^index\.php/main(/.*)?$ https://%1$1 [L,NC,NE,R=301]


请按照每个步骤操作,确保您的
.htaccess
文件应位于根目录中。不在系统文件夹中也从
应用程序
文件夹@LisaGive中删除
.htaccess
文件。如果其他文件夹失败,请将此快照删除。这对我来说一直很有效。每次都是傻瓜式的。不管框架如何。我可以从url中删除index.php,但我希望ot也能自动重定向。按照当前规则,如果您在浏览器中输入
domain.com/contact
,它是否加载正确的内容?请按照每个步骤操作,确保您的
.htaccess
文件应位于根目录中。不在系统文件夹中也从
应用程序
文件夹@LisaGive中删除
.htaccess
文件。如果其他文件夹失败,请将此快照删除。这对我来说一直很有效。每次都是傻瓜式的。不管框架如何。我可以从url中删除index.php,但我希望ot也能自动重定向。按照当前的规则,如果您在浏览器中输入
domain.com/contact
,它会加载正确的内容吗?太棒了,工作,但我想要的是从htaccess的东西,重定向自动从主url到首选url。我如何能做到这一点,在网站中的所有链接自动??$route['(:any)]=“主/$1”;它的工作很好,但没有加载这个特定的页面domain.com/index.php/adminis,这很好,但我想要的是从htaccess的东西,它会自动从主url重定向到首选url。我如何自动为网站中的所有链接执行此操作?$route['(:any)]=“main/$1”;它工作得很好,但是没有加载这个特定的页面domain.com/index.php/admin。它工作得非常好,这太棒了。我知道你会帮我的,你是最好的。最后一个问题,我有很多URL需要重写,所以我应该只重写所有的URL,比如$route['contact']='main/contact';在route.php中,或者它也可以是自动的??在标准htacceas设置中它可以是自动的,但您使用的是CI框架,我不太清楚,不能完全这样说。我可以尝试,如果您让我知道如何在标准上做到这一点,我将更新标准htacceas,我认为也可以使用CI!Regardsgot答案$route['(:any)]=“main/$1”;对于routes.phpi,当我在我的网站中使用上述代码作为htaccess时,对于图像和图像,我获得err_http2_ping_failed 200。有什么建议吗,先生?这很好,太棒了,我知道你会帮我的,你是最好的。最后一个问题,我有很多URL需要重写,所以我应该只重写所有的URL,比如$route['contact']='main/contact';在route.php中,或者它也可以是自动的??在标准htacceas设置中它可以是自动的,但您使用的是CI框架,我不太清楚,不能完全这样说。我可以尝试,如果您让我知道如何在标准上做到这一点,我将更新标准htacceas,我认为也可以使用CI!Regardsgot答案$route['(:any)]=“main/$1”;对于routes.phpi