Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 从URL末尾重定向/index.php_.htaccess_Url_Url Rewriting_Canonicalization - Fatal编程技术网

.htaccess 从URL末尾重定向/index.php

.htaccess 从URL末尾重定向/index.php,.htaccess,url,url-rewriting,canonicalization,.htaccess,Url,Url Rewriting,Canonicalization,有一个包含子页面的网站,所有子页面均采用以下格式: mydomain.com/something 那很好。但不好的是,您也可以执行mydomain.com/something/index.php(您可以在浏览器中输入此格式的地址),但仍然可以在mydomain.com/something上获取内容 我不希望这两种可能性同时出现,谷歌不喜欢这样。我只希望有一个是可能的 所以我想做的是,每当你在浏览器中键入mydomain.com/something/index.php,你就会被重定向到mydom

有一个包含子页面的网站,所有子页面均采用以下格式:

mydomain.com/something
那很好。但不好的是,您也可以执行
mydomain.com/something/index.php
(您可以在浏览器中输入此格式的地址),但仍然可以在
mydomain.com/something
上获取内容

我不希望这两种可能性同时出现,谷歌不喜欢这样。我只希望有一个是可能的

所以我想做的是,每当你在浏览器中键入
mydomain.com/something/index.php
,你就会被重定向到
mydomain.com/something
(最后没有
/index.php


我应该如何编写.htaccess代码来执行类似操作?

将以下行添加到网站根目录中的.htaccess中

RewriteEngine on

RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^(.*?)/?index.php$ /$1 [R=301,L,NC,QSA]
注意:第一个条件确保之前不进行重定向(以防止重定向循环)

Mordor:

您可以在.htaccess文件中尝试此操作:

RewriteCond %{THE_REQUEST} ^.*/index.php 
RewriteRule ^(.*)index.php$ /$1 [R=301,L]

您的解决方案使
mydomain.com/anything/index.php
进入主页,进入
mydomain.com
,这不是我的心愿。我需要它去
mydomain.com/anything
(所以基本上我需要的是
/index.php
被“转义”)你的.htaccess中还有什么其他规则,一定有一些冲突。只有
www
非www
重定向,哦,再加上这个
重写cond%{REQUEST_FILENAME}-f RewriteCond%{REQUEST_FILENAME}-重写规则!\。(pdf | js | ico | gif | jpg | png | css | rar | zip | tar\.gz)$index.php[L]
哦,是的,现在当我删除上面的行时,您的解决方案就可以工作了(那
RewriteCond%{REQUEST|u FILENAME}!-f…
,但不幸的是,mydomain.com/something使/something页面成为404-我需要前面的行,不能删除它们…在这些指令之前添加我的答案中的代码,这应该可以解决它